Bundesliga roundup: Matchday 33
All the issues at the top of the Bundesliga will be settled on the last day of the season after a penultimate matchday of high drama. At the other end of the table, it's time to say goodbye for two teams.
Eintracht Frankfurt 0 - 2 Mainz
Anthony Ujah's first brace for more than three years leaves Frankfurt's Champions League hopes in serious jeopardy. The Nigerian struck twice in four second half minutes as Frankfurt's Europa League exertions caught up with them. Ante Rebic missed a golden chance to put the Eagles ahead early on but they must now win in Munich next week and hope results go their way.
RB Leipzig 0-0 Bayern Munich
Bayern Munich missed the chance to win the Bundesliga title on the penultimate day in a tense draw in Leipzig. Robert Lewandowski's toe ruled out Leon Goretzka's goal on a VAR review, excusing Leipzig's one poor moment in defense in the game. Peter Gulacsi made some strong saves to keep Bayern out but the result - combined with Dortmund's win - means the title race will go down to the final day.
Borussia Dortmund 3-2 Fortuna Düsseldorf
Dortmund's title dreams are still alive going into the final day after a nervy win. Christian Pulisic headed BVB into the lead in his final home game for the club, but Marwin Hitz's mistake let Fortuna back in. Thomas Delaney put Dortmund back ahead, then Dodi Lukebakio missed a penalty. Mario Götze scored in injury time, but BVB wobbled before the final whistle.
Bayer Leverkusen 1-1 Schalke
In a dramatic Bundesliga game, Schalke upset the odds a bit and nearly beat European hopefuls Leverkusen. Kai Havertz scored yet again to give the home side a lead, but then Schalke equalized when Guido Burgstaller tucked away a chance just after the break. Daniel Caligiuri missed a penalty soon after and then VAR denied Schalke another spot kick. The result leaves the European race wide open.
Nuremberg 0-4 Gladbach
Nuremberg's Bundesliga relegation was confirmed after a thumping by a Gladbach side desperate to sneak into a Champions League spot. This result pushed them ahead of Leverkusen and put them in a strong position to finish in the top four - if they can beat Dortmund on the final day. Ibrahima Traore impressed, as did Josip Drmic, as Gladbach confirmed Nuremberg's departure from the top flight.
Hanover 3-0 Freiburg
Despite dominating against Freiburg and putting in one of their best performances of the season, Hannover's fate was sealed thanks to a Stuttgart win. Ihlas Bebou scored the goal that ended the contest, adding to Waldemar Anton's first-half header. Walace sent a thundering strike to top off the score. Freiburg managed just one shot on target.
Hoffenheim 0-1 Werder Bremen
Werder's European hopes stayed alive against Hoffenheim who, despite this defeat, still have a chance of qualifying for European football too. An error from Oliver Baumann set up a passage of play that led to Johannes Eggestein scoring. His brother Maximilian added a second minutes later, but a VAR review ruled it out. Hoffenheim were out of luck on the day they bid farewell to Julian Nagelsmann.
Stuttgart 3-0 Wolfsburg
Stuttgart confirmed their spot in the relegation playoff with a comfortable home win against Wolfsburg. Schalke's draw meant Stuttgart can't climb higher, and will leave the side in red and white wondering what might have been had they picked up a few more wins. After all, their final game of the season is against Schalke. Daniel Didavi scored one and assisted another.
Augsburg 3-4 Hertha Berlin
In the game of the day that mattered perhaps the least in the context of the rest of the league, seven goals were scored in a thrilling encounter. Augsburg went ahead, Hertha equalized and then the pattern repeated itself again before Michael Gregoritsch edged the hosts 3-2 ahead. Two late strikes from Salomon Kalou though turned the tide to give Hertha the victory.