Leipzig's title hopes came to an emphatic end as Ingolstadt took points off the Bundesliga newcomers a second time. Dortmund failed to break down Cologne, and Darmstadt continued their winning ways.
RB Leipzig 0-0 FC Ingolstadt
Leipzig needed a win to prevent Bayern's evening game against Wolfsburg from becoming a title clinching game for the Bavarians. But they encountered a resolute defensive effort from Ingolstadt, enjoying only a few solid chances to take the lead.
One of the better ones fell to David Selke, who tried to redirect a whipped cross from Bernardo towards goal late in the second half. He couldn't make proper contact.
The result means that Bayern will be crowned Bundesliga champions with a victory against the Wolves.
Borussia Dortmund 0-0 Cologne
It was a lively game, especially in the first half, but goals simply would not fall. Cologne looked particularly animated before the break, with Milos Jojic and Leonardo Bittencourt both coming close - Bittencourt after an impressive solo run.
After the break the pace slowed, though, and before long the antics of a trio of pigeons on the pitch began to distract from a goalless draw. Cologne managed some self-deprecating humor by admitting on their twitter account that the two birds "have settled down in BVB's penalty area - where they have some peace and quiet."
Timo Horn salvaged a point for the visitors in the closing seconds with a splendid reflex save. Raphael Guerreiro's back post header was goal-bound, but Horn got down low to bat it away.
The point for Dortmund ensured they would play Champions League football next season, and they will try to solidify their spot in third when they face Hoffenheim next weekend.
Darmstadt 3-0 Freiburg
(Platte 22', Gondorf 45+1', Schipplock 65')
Darmstadt's players continue to channel Welsh poet Dylan Thomas, doggedly refusing to "go gentle into that good night." In the Bundesliga's relegation hospice since November or December, Torsten Frings' Lillies seem to have no plans on checking out early.
But rage as Darmstadt might against the dying of the light, the Lillies are still depending on one of Augsburg, Hamburg, Wolfsburg and Mainz to lose their last three games.
Freiburg's frailty in the air cost them once again. Felix Platte's opener was a header from a cross, Jerome Gondorf's second a header from a free kick, and Sven Schipplock's third also stemmed from a set piece delivery into the box. Though still in the top 10, Freiburg's goal difference is a catastrophic negative 17.
Werder Bremen 2-0 Hertha Berlin
(Bartels 9', Kruse 15')
Bremen's hot streak continued, the hosts put Berlin to bed early on Saturday. Fin Bartels started the ball rolling with a cheeky nutmeg in a one-on-one with Rune Jarstein. Jarstein meanwhile turned villain six minutes later, scuffing a terrible clearance with his left foot. The ball barely made it out of the Hertha box and was directed straight at Bartels. He kept his cool and put the ball on a plate for Max Kruse, who scored his eighth goal in the month of April.
Defeat for Hertha virtually banishes any dreams of Champions League football in the German capital next season.
Mainz 1-2 Borussia Mönchengladbach
(Muto 89' - Stindl 31', Schulz 46')
Nico Schulz took his A-game down the Rhine to face Mainz, setting up the first, scoring the second, and coming close to another goal of his own from range in the first half.
Gladbach, surely tired and still digesting Tuesday's disappointment against Frankfurt in the German Cup, keep themselves in the hunt for European positions on league performance with the three points. If Dortmund win the cup final, then seventh in the league would suffice for a European berth.
Off-form Freiburg are now just two points ahead of Gladbach in that position.
Mainz's late goal from Yoshinori Muto, connecting with a Pablo de Blasis cross, proved just a consolation, meaning Mainz remain very much in the fight to avoid the relegation playoff game.