Marco Reus scored his first goal in nine months and Mario Gomez scored the winner as Stuttgart picked up a big win at Augsburg. On Saturday, Robert Lewandowski came off the bench to score a last-gasp penalty for Bayern.
Borussia Mönchengladbach 0-1 Borussia Dortmund, Borussia-Park
Marco Reus scored his first goal since last May as Borussia Dortmund held on to inflict a fourth successive league defeat on the hosts.
The goal came after a neat combination between Andre Schürrle, Mario Götze and Reus, who finished the move with a fine shot that went in via the underside of the bar.
Gladbach pushed for an equalizer and Roman Bürki was called into action several times. He parried a shot by Lars Stindl that Raul Bobadilla almost forced over the line, but Sokratis was there to clear. Bürki also had to punch clear a header by Nico Elvedi and got down well to save again from Bobadilla.
But they failed to penetrate Dortmund's back line and Gladbach's slide down the table continues as they find themselves in 10th, while Dortmund's return to form sees them go second.
Mario Gomez scored his second Bundesliga goal since returning to Stuttgart, and his third of the season.
Augsburg 0-1 Stuttgart, WWK Arena
Mario Gomez scored the only goal of the game as Stuttgart earned their first back-to-back wins in the Bundesliga this season.
Gomez pounced after a free-kick had crashed into the Augsburg wall, and the former Germany striker took a touch and finished clinically into the bottom corner for his third league goal of the season.
Augsburg had a goal ruled out for offside via the VAR system and showered the Stuttgart goal with shots in the final stages, but the visitors held on for a win that pulls them comfortably clear of the relegation zone.
Read more: Why VAR must be scrapped
Wolfsburg 1-2 Bayern Munich, Volkswagen Arena
(Didavi 8' — Wagner 64', Lewandowski pen 90'+2)
Robert Lewandowski came off the bench to score a stoppage time penalty as Bayern Munich were pushed all the way by Wolfsburg.
Wolfsburg struck early through Daniel Didavi, who got ahead of Juan Bernat to meet Yunus Malli's cross and nod the ball beyond Sven Ulreich.
Franck Ribery was lucky to stay on the field after VAR reviewed an elbow on Renato Steffen as Wolfsburg continued to frustrate Bayern, who welcomed back Thiago Alcantara after a long injury lay-off but benched Robert Lewandowski.
Bayern missed the chance to draw level when they were awarded a controversial penalty for a challenge on Corentin Tolisso — Arjen Robben saw his resulting spot kick palmed on to the post superbly by Koen Casteels.
But Bayern leveled through a Sandro Wagner header from Robben's cross before Lewandowski converted from the spot to notch up Bayern's 13th straight Bundesliga victory after Robben was dragged down by Gian-Luca Itter.
Read more: Wolfsburg 1-2 Bayern Munich: As it happened
Schalke 2-1 Hoffenheim, Veltins-Arena
(Kehrer 11', Embolo 28' — Kramaric 78')
A first half blitz from Schalke was ultimately enough to see off a poor Hoffenheim in Gelsenkirchen.
Thilo Kehrer headed Schalke into an early lead and the hosts were celebrating a second four minutes later, only for Embolo's strike to be ruled out by VAR for offside.
But Embolo was not to be denied as he struck again, and this time the goal stood as he pounced on a horrible mistake at the back by Hoffenheim's Kevin Vogt.
Hoffenheim improved after the break and Andrej Kramaric gave them a lifeline 12 minutes from time with a header from close range, but it was too little too late as Schalke held on to stay in the mix for a Champions League place.
Hamburg 1-2 Bayer Leverkusen, Volksparkstadion
(Hahn 70' — Bailey 40', Havertz 50')
Bayer Leverkusen produced a clinical performance in Hamburg where the struggling hosts rallied too late.
The Werkself took the lead after Leon Bailey capitalized on hesitation from Douglas Santos, winning the ball in the HSV box and putting Leverkusen ahead ten minutes before the break.
Ten minutes after the restart, Kai Havertz stroked home from Benjamin Henrich's cut-back to double Leverkusen's lead.
Bernd Hollerbach's side got back in the game through Andre Hahn but Bobby Wood wasted a late chance to equalize.
The conditions were tough, but Freiburg picked up a vital win in their must-win game against relegation rivals Werder Bremen.
Freiburg 1-0 Werder Bremen, Schwarzwald-Stadion
(Petersen pen 24')
Freiburg scored and missed a penalty as they edged Werder Bremen in a full-blooded relegation battle.
Nils Petersen scored his 12th Bundesliga goal of the season after Johansson bundled Terrazzino to the ground. Freiburg had the chance to make the win safe in the second half, but Janik Haberer stepped up after Petersen was fouled, and his woeful effort flew wide of the post.
But it mattered little in the end as Freiburg held on for a vital three points, while Werder Bremen remain mired in the relegation dogfight.
Cologne 1-1 Hannover, RheinEnergie Stadion
(Osako 29' — Füllkrug 37')
Cologne were forced to settle for a point when Claudio Pizarro's 94th-minute strike was ruled out by VAR .
Cologne had taken a first-half lead when Jonas Hector's free-kick fell to Yuya Osako at the back post, the Japanese forward beating two men before smashing an unstoppable shot into the roof of the net.
But Hannover were the better side, recording 15 shots to the hosts' five, and equalized seven minutes later when Niclas Füllkrug capped off a neat move with a clinical finish.
Worryingly for Cologne, striker Simon Terodde was carried off in the second half after an unintentional kick in the face from Salif Sane.
Robin Quaison nets his and Mainz's second of the night as he proved the matchwinner for the Bundesliga strugglers.
Hertha Berlin 0-2 Mainz, Olympic Stadium
(Quaison 40', 65')
Mainz opened up a six-point cushion between themselves and 17th placed Hamburg with a vital win at Hertha Berlin.
The star of the show was Robin Quaison, who netted a goal in each half. His first was a low shot from distance that sneaked inside the near post beyond the slightly unsighted Rune Jarstein.
Quaison's second saw him beat the Hertha offside trap and slot the ball through the legs of the advancing Jarstein. The victory ends a run of three consecutive league defeats for Mainz.