Darmstadt, Augsburg and Hoffenheim will all be in the Bundesliga next season. But Stuttgart, Werder Bremen and Eintracht Frankfurt will all face a nail-biting final day as they bid to avoid the drop.
Hertha Berlin 1-2 Darmstadt
(Darida 14' - Gondorf 24', Wagner 82')
Darmstadt came from behind to grab three vital points in the German capital, guaranteeing first-division status for another season. Having fallen behind after Vladimir Darida's opener, the Bundesliga's smallest side leveled thanks to Jerome Gondorf. The visitors were able to celebrate in the end after Sandro Wagner bundled home against his former club. Wagner, who netted his 15th of the season, was shown a second yellow card late on. Hertha have collected only one point from an available 18 and slip down to sixth place.
Stuttgart 1-3 Mainz
(Gentner 6' - Malli 37', Cordoba 53', Onisiwo 77')
Stuttgart will need to beat Wolfsburg and get help elsewhere on the final weekend of the season to avoid their first relegation since the 1974/75 season. Despite taking the lead through Christian Gentner, the Swabians conceded three goals and are stranded second-bottom in the table. Mainz have secured European qualification for next season and are mathematically still in the hunt for fourth, although they would need an almost impossible 11-goal swing.
Eintracht Frankfurt 1-0 Borussia Dortmund
Stefan Aigner's early lone goal gave Frankfurt their third consecutive win - and over second-placed Dortmund at that - as they moved out of the bottom three. Niko Kovac's side looked dead and buried just a few weeks ago, but the Eagles have somehow clawed themselves out of the mire. Frankfurt will meet Werder Bremen next weekend, with the reward for the winner being guaranteed Bundesliga survival. It was Dortmund's fourth loss of the season.
Cologne 0-0 Werder Bremen
Werder Bremen remain third from- ottom after a goalless draw at Cologne. Viktor Skripnik's side found the net through Fin Bartels in the first half, but the goal was controversially ruled out by referee Felix Zwayer. Bremen face Frankfurt on the last day of the season, knowing three points would keep them in the Bundesliga.
Hannover 1-0 Hoffenheim
When 28-year-old Julian Nagelsmann took charge at Hoffenheim in round 20, they were tied for last in the table. Relegation - the first in the club's history - seemed inevitable. But they have 23 points from an available 39 to secure their survival. Hannover are already relegated, but managed to end the season on a positive note, taking the points courtesy of Hiroshi Kiyotake's first half goal.
Borussia Mönchengladbach 2-1 Bayer Leverkusen
(Hahn 43', 79' - Aranguiz 20')
Charles Aranguiz gave Leverkusen an early lead at Borussia Park, but Mönchengladbach came from behind to take a giant leap towards Champions League football. Andre Hahn leveled before the break, and went on to score the winning goal - his fourth in three games - for Andre Schubert's men. Gladbach face Darmstadt on the final day of the season and barring a thrashing, will finish fourth.
Schalke 1-1 Augsburg
(Huntelaar 82' - Baier 89')
Schalke's hopes of qualifying for the Champions League are over after Daniel Baier scored with a minute left at the Veltins Arena. As Mainz take on Hertha on the final day, the Royal Blues cannot catch fourth-place Borussia Mönchengladbach and will have to make do with a spot in the Europa League. Klaas-Jan Huntelaar opened the scoring late on, but Daniel Baier's goal secured a point for Markus Weinzierl's side who are officially safe from the drop.
Hamburg 0-1 Wolfsburg
(Luiz Gustavo 73')
Hamburg and Wolfsburg had little to play for on the penultimate weekend of the season, and their encounter was a drab affair. Luiz Gustavo scored in the second half to give the Wolves three points and their first win in eight Bundesliga matches. Both teams will end the season in mid-table.