Bayer Leverkusen, Eintracht Frankfurt and Hoffenheim battled for an advantage in the European race, while Cologne and Hamburg did their best to keep their ever-smaller survival hopes alive.
Hertha Berlin 2-1 Cologne
(Selke 49', 53' — Bittencourt 29')
Cologne's slim survival hopes suffered another blow after a four-minute turnaround in the second half left them leaving the capital empty-handed. Cologne took the lead when, perhaps somewhat against the run of play, Jhon Cordoba flicked on a long goal kick and Leonardo Bittencourt got in behind Hertha's defense to poke home. Ruthenbeck's 4-1-4-1 formation stifled the hosts, but only in the first half. Davie Selke emphatically smashed home an equalizer at the back post just four minutes after the restart, and not long afterwards deflected home a low drive from Marvin Plattenhardt. The result returned Cologne to the bottom of the table and leaves them five points off the playoff spot with just four games left.
Leverkusen 4-1 Frankfurt
(Brandt 21', Volland 71', 77', 88' — Fabian 23')
After Niko Kovac showed great composure ahead of the game fending off media questions about his future job, his side failed to do the same on the pitch as Frankfurt continue to falter in the race for a European spot. A collector's item put Leverkusen ahead, when Julian Brandt sent a gorgeous glancing header off the far post and in. But just two minutes later, the game was level; quick transitional play from Marius Wolf and Kevin Prince Boateng ended with Marco Fabian passing into the far corner. The tempo of the game slowed in the second half, but with a draw looming, Kevin Volland took advantage of former Leverkusen defender Danny da Costa's poor positioning to restore Leverkusen's lead. Volland secured his hat trick after unselfish play from substitute Karim Bellarabi twice set the striker up for simple finishes.
Werder Bremen 1-1 RB Leipzig
(Moisander 28' — Lookmann 50')
Weser Stadion, Bremen
In a game both sides might have won, RB Leipzig might feel as though they lost as the race for Europe hots up. The hosts dominated the first half and were it not for poor decisions in front of goal would have been up by more than the one goal at the break. Werder Bremen paid for it too, as Ademola Lookman came off the bench after the interval to make an instant impact, slotting home from close-range. Both Jiri Pavlenka and Peter Gulacsi made a handful of outstanding saves in the second half to keep the scores level, with RB Leipzig perhaps left feeling the slightly more aggrieved of the two at not winning.
Hoffenheim 2-0 Hamburg
(Gnabry 18', Szalai 27')
Wirsol Rhein-Neckar Arena, Sinsheim
The rollercoaster life of a Hamburg fan continued on Matchday 30 as last week's euphoric win over Schalke was followed up with a disappointing defeat in Sinsheim. Having had a goal ruled out via VAR for offside, Hoffenheim took a deserved lead when Serge Gnabry continued his fine form, weaving his way into the box before poking home. Hamburg lost their way and less than ten minutes later, the hosts made them pay again when Nico Schulz dribbled deep into the box to set up Adam Szalai for a determined finish. In the second half, Hamburg showed a few more signs of life, but, like much of their season, were short of the quality needed to win games.
Bayern Munich 5-1 Borussia Mönchengladbach
(Wagner 37', 41', Thiago 51', Alaba 67', Lewandowski 82' — Drmic 8')
Allianz Arena, Munich
If you thought Bayern Munich were going to take their foot off the gas after clinching the league title, think again. The champions elect were just as ruthless on Saturday evening against Gladbach as they have been all season. Josip Drmic put Gladbach ahead early, but it was only a matter of time before the Bavarians did what they do best. Thomas Müller picked out Sandro Wagner for the equalizer eight minutes before the half, and the two combined again four minutes later to give Bayern the lead. Thiago, David Alaba and Robert Lewandowski added to Bayern's tally in the second half to give the Bundesliga champions elect their 24th victory of the season.
Stuttgart 1-1 Hannover
(Thommy 53' — Füllkurg 90+1')
Mercedes-Benz Arena, Stuttgart
With Stuttgart too far back to make a European spot and Hannover safe from relegation, this one failed to shine the same way the sun did on Matchday 30. That is until Erik Thommy curled in a brilliant effort into the top corner from the edge of the box to give the home side the lead. Heading for their sixth win by a one-goal margin since Tayfun Korkut took over, Stuttgart were left deflated when Niclas Füllkrug leaped athletically to loop a header over Ron-Robert Zieler.
Schalke 2-0 Borussia Dortmund
(Konoplyanka 49', Naldo 82')
Veltins Arena, Gelsenkirchen
Domenico Tedesco's side deservedly beat Borussia Dortmund in the derby, securing the victory after Yevhen Konoplyanka took advantage of poor defending and Naldo scored a thunderous free kick.
Read more: Naldo seals Schalke derby win
Wolfsburg 0-0 Augsburg
Bruno Labbadia's men missed the chance to win after spurning great chances in the second half. A win would have distanced Wolfsburg from the relegation zone, but a draw keeps them looking over their shoulder.
Mainz 2-0 Freiburg
(De Blasis 45+7' pen., 79')
Opel Arena, Mainz
An unspectular encounter on the pitch was dominated by spectacular events off it, as Mainz secured a vital win to go ahead of fellow relegation battlers Freiburg on goal difference. Pablo de Blasis' penalty gave the hosts a controversial halftime lead after the video assistant referee awarded a penalty when some of the players were already back in their dressing rooms, before a howler from Freiburg goalkeeper Alexander Schwolow handed the Argentinian striker his second of the evening in the second half.
Read more: Mainz top Freiburg after VAR drama