Bayern Munich have one hand on the Bundesliga title after beating struggling Bochum, while Hertha Berlin's relegation was confirmed.
Schalke slipped up at home and now need a miracle to pip Bayern at the post as Hannover boosted their hopes of avoiding the drop by thrashing Borussia Monchengladbach.
Thomas Muller plundered a hat-trick as Bayern followed up reaching the UEFA Champions League final with a 3-1 home success over Bochum to put Louis van Gaal's side on the brink of winning the league.
The promising Muller scored twice in the space of two first-half minutes before completing his treble at the Allianz Arena on 69 minutes.
Christian Fuchs pulled a goal back for Bochum five minutes from time, but it could not halt Bayern's seemingly unstoppable march to the title.
Schalke headed into the penultimate weekend of the season level on points with Bayern, but their dreams lie in tatters after a 2-0 home defeat by Werder Bremen.
Mesut Ozil and Hugo Almeida scored in the second half for Bremen and, due to the gulf in goal difference, it now appears a formality that Bayern will be crowned champions ahead of Schalke.
At the bottom end of the table, Hertha's long expected drop out of the top flight was rubber-stamped after a 1-1 draw at Bayer Leverkusen.
Raffael had given Hertha a 12th minute lead, but Bayer ensured they are still in the hunt for a Champions League spot when Manuel Friedrich scored a second-half equaliser.
Hannover surged out of the relegation places after a stunning 6-1 hammering of Monchengladbach on home soil.
Karim Haggui, Sergio Pinto and Didier Konan all scored inside the first half-hour and Mike Hanke netted a fourth goal before the interval.
Substitute Sofian Chahed made it five and, though Patrick Herrmann pulled a goal back for Gladbach, Arnold Bruggink completed the rout on 74 minutes.
Nurnberg drop into the bottom three as a result of Hannover's win after they were thumped 4-0 away by Hamburg, who were knocked out of the Europa League semi-finals by Fulham on Thursday.
Jonathan Pitriopa and Mladen Petric's brace had the game sewn up inside 25 minutes before substitute Ruud van Nistelrooy scored the fourth in the second half.
Ciprian Marica fired a brace in the space of two minutes as Stuttgart came from behind to draw 2-2 at home with Mainz.
Malik Fathi and Andre Schurrle scored on 53 and 64 minutes respectively for Mainz before Marica struck on 72 and 74 minutes for Stuttgart.
Prince Tagoe came off the bench to inspire Hoffenheim to a 2-1 success at Eintracht Frankfurt.
Pirmin Schwegler put Frankfurt ahead on 20 minutes, but Tagoe levelled 10 minutes from time and then grabbed the winner two minutes from the end.
Substitute Marco Stiepermann earned Borussia Dortmund a 1-1 draw at home to Wolfsburg, who had gone in front through danger man Edin Dzeko.
Mohammadou Idrissou's brace was only enough to earn Freiburg a 2-2 draw at Cologne as Sebastian Freis scored a late equaliser.
On loan Zoran Tosic put Cologne ahead before Idrissou's goals either side of the interval had Freiburg in front, only for Freis to net six minutes from time.