Bayern Munich sealed their sixth straight Bundesliga title in style, Borussia Dortmund returned to winning ways and Cologne suffered a major setback in their pursuit of Bundesliga survival.
Hamburg 3-2 Schalke
(Kostic 17', Holtby 52', Hunt 84' — Naldo 7', Burgstaller 63')
Aaron Hunt's late thunderbolt gave Hamburg a stunning 3-2 win over second-placed Schalke to lift them off the foot of the table.
Schalke took an early lead through Naldo, who leapt highest to meet Daniel Caligiuri's free-kick and nod the ball past Julian Pollersbeck.
But Hamburg were soon level. A long throw by Douglas Santos caused indecision in the Schalke box and Filip Kostic pounced to nod the ball home from close range.
Hamburg put their noses in front soon after the break when Tatsuya Ito picked out Lewis Holtby, who headed in the rebound after his first effort was saved.
Schalke squared the game through Guido Burgstaller, who was able to squeeze the ball in from a tight angle after Leon Goretzka's initial effort had been parried.
But with the clock ticking in Hamburg, Hunt produced some late magic, sending a rocket of a shot into the top corner from 25 meters to keep Hamburg's slim hopes of staying up alive for another week.
Cologne 1-1 Mainz
(Hector 7' — De Blasis 50')
Cologne and Mainz shared the points in their relegation six-pointer, a result that does neither team much good.
The hosts opened the scoring when Leonardo Bittencourt's cross was met by Jonas Hector, whose glancing header nestled in the bottom corner.
Mainz grabbed a huge equalizer five minutes into the second half though. Guilio Donati's cross from the right was met on the run by Pablo De Blasis, whose header flew past Timo Horn to silence the home fans.
Donati was sent off late on, but for all the support from the home crowd, Cologne couldn't get the win they so desperately needed.
Borussia Dortmund 3-0 Stuttgart
(Pulisic 38', Batshuayi 48', Philipp 59')
Signal Iduna Park, Dortmund
Needing inspiration after a heavy defeat in Munich last week, Borussia Dortmund received a spark from Christian Pulisic to overcome Stuttgart.
Pulisic scored a somewhat fortuitous goal in the first half, lofting a cross meant for Michy Batshuayi at the far post over the head of Ron-Robert Zieler and into the top corner. Batshuayi added a second after halftime and Maximilian Philipp sealed the victory with Dortmund's third.
The win for Dortmund ended Tayfun Korkut's eight-match unbeaten streak and put BVB a point behind Schalke before the two meet in the Ruhr derby next week.
Eintracht Frankfurt 1-1 Hoffenheim
(Jovic 49' — Gnabry 56')
The two European hopefuls split the points after an end-to-end contest on Sunday evening.
Luka Jovic put Frankfurt ahead shortly after the break, tapping in a cross from Marius Wolf for his fourth goal in as many games. But Serge Gnabry equalized moments later, firing a shot from the left side of the penalty area inside the far post.
The draw momentarily lifts Frankfurt to fourth place before Leipzig hosts Leverkusen on Monday. Hoffenheim remain entrenched in seventh.
Freiburg 0-2 Wolfsburg
(Didavi 2', 83')
Daniel Didavi scored twice as Wolfsburg finally earned their first win under coach Bruno Labbadia.
Didavi struck inside two minutes with a low drive and again with seven to play as Wolfsburg gave themselves a three-point cushion ahead of the relegation playoff place.
Nils Petersen missed the chance to pull one back from the spot in injury time as Koen Casteels pulled off a fine save low to his left. That summed up Freiburg's day, while Wolfsburg took a huge step towards Bundesliga survival.
Borussia Mönchengladbach 2-1 Hertha Berlin
(Hazard 75', 79' pen — Kalou 40')
Borussia Park, Mönchengladbach
Borussia Mönchengladbach came from behind to see off Hertha Berlin and keep their hopes of European qualification alive.
After a cagey opening, the visitors took the lead shortly before the break. A ball forward caused confusion between Gladbach keeper Yann Sommer and defender Jannik Vestergaard, and Kalou was able to roll the ball into an empty net for the easiest of finishes.
Gladbach thought they had squared the contest with a fortuitous strike from Patrick Herrmann, whose shot took a deflection and looped over Rune Jarstein, only for the goal to be chalked off for offside in the build-up.
But that didn't stop Gladbach, who leveled through Thorgan Hazard's well executed low volley, which flew through the legs of Jarstein after a cross from the right had caught Hertha out.
And Hazard turned the game on its head soon after, rolling in a cool penalty after Nico Elvedi was fouled.
Augsburg 1-4 Bayern Munich
(Süle og 18' — Tolisso 32', Rodriguez 38', Robben 62', Wagner 87')
Bayern Munich won a sixth successive Bundesliga title with a crushing win in Augsburg — and did so with a second string team.
Augsburg took a shock lead as Sergio Cordova profited from some calamitous Bayern defending. Jerome Boateng took way too long on the ball and was mugged by Cordova, whose shot was saved by Sven Ulreich but ricocheted back off the face of Niklas Süle and into the empty net.
Corentin Tolisso leveled soon after though. Joshua Kimmich's pinpoint cross from the right found the Frenchman in space at the far post, and he simply nodded in from point-blank range.
Read more: Bayern seal sixth straight title
Bayern had turned the game on its head before halftime courtesy of James Rodriguez, who stroked in at the far post after Kimmich drilled a low ball across the Augsburg goal to notch another assist.
Arjen Robben joined the party after the break, lashing Rodriguez's cross past Marwin Hitz in the Augsburg goal, and Sandro Wagner made it four late on with a header.