It was an afternoon of thrills and spills in the Bundesliga, with Hertha and Hoffenheim picking up big victories. Bayern won but Dortmund almost suffered an embarrassing defeat at Ingolstadt.
Bayern Munich 2-0 Borussia Mönchengladbach
(Vidal 16', Costa 31')
Bayern Munich returned to winning ways in the Bundesliga with a comfortable 2-0 win over Borussia Mönchengladbach.
Bayern, who had been held to draws with Eintracht Frankfurt and Cologne in their previous two league games, took the lead through Arturo Vidal's towering header on 16 minutes.
Gladbach, who looked jaded from their exerts midweek in the Champions League, struggled to create any chances of note and Bayern extended their lead in the 31st minute.
Douglas Costa, the game's standout player, chested down David Alaba's cross and fired in to put the champions in complete control.
Bayern keep their three-point cushion at the top of the Bundesliga.
Ingolstadt 3-3 Borussia Dortmund
(Cohen 6', Lezcano 24', 59' - Aubameyang 59', Ramos 69', Pulisic 90')
Christian Pulisic scored a last minute equalizer as Borussia Dortmund escaped defeat at lowly Ingolstadt.
The hosts ran into a 2-0 first half lead, with Almog Cohen's volley and Dario Lezcano's flicked header putting Ingolstadt in dreamland.
But Dortmund came out fighting in the second half and pulled one back through Pierre-Emerick Aubameyang, who nodded in Ousmane Dembele's cross - but less than a minute later Ingolstadt reestablished their two-goal cushion.
Lezcano swept the ball in from close range to make it 3-1 and Ingolstadt appeared to be on their way to a famous win - but Dortmund had other ideas.
Adrian Ramos cut the lead to 3-2 with a low finish after Pulisic created the chance for the Colombian, before Pulisic secured a point with a tap-in in the final minute.
Hertha Berlin 2-1 Cologne
(Ibisevic 13', Stark 74' - Modeste 65')
Hertha Berlin moved level on points with Bayern Munich at the top of the Bundesliga with a huge win over high-flying Cologne.
The home side took the lead through Vedad Ibisevic who turned the ball in for his seventh goal of the season after a strong run and cross by Mitchell Weiser, who escaped a handball call against him in the buildup.
Anthony Modeste, the top scorer in the Bundesliga this season, scored his ninth of the campaign with a tap-in after Leonardo Bittencourt's cutback was fumbled by Rune Jarstein.
But poor marking cost Cologne when Niklas Stark nodded in the winner after Weiser's free-kick was nodded across goal.
Cologne hit the woodwork twice and had a goal disallowed as they ultimately came up short.
Leverkusen 0-3 Hoffenheim
(Demirbay 15', Wagner 49', Zuber 60')
Hoffenheim put three goals past Bayer Leverkusen who had Kevin Volland sent off after five minutes and coach Roger Schmidt sent to the stands.
Volland was given his marching orders for a cynical foul on Kerem Demirbay, who was clean through, leaving the referee with no choice but to brandish the red.
That set the tone for Leverkusen who conceded the first soon after, and it was Demirbay who scored it, cutting inside and guiding the ball inside the far post to cap a fine counter-attack.
Sandro Wagner turned in from close range four minutes into second half after Ömer Toprak slipped to allow Wagner a free swing.
Steven Zuber rolled the ball into the empty net from the edge of the box for number three, after Bernd Leno raced out of his box but failed to clear properly, capping a miserable afternoon for the hosts but a superb outing the visitors.
Darmstadt 3-1 Wolfsburg
(Ben-Hatira 25', Kleinheisler 68', Sirigu 76' - Gomez 60')
Mario Gomez finally broke his Wolfsburg duck but was unable to prevent his side slipping to a 3-1 defeat at struggling Darmstadt.
Wolfsburg faced an uphill task after defender Jeffrey Bruma was sent off after 24 minutes, and Änis Ben-Hatira compounded the misery by curling the resulting free-kick sweetly into the top corner.
Gomez nodded Wolfsburg level but the parity only lasted for eight minutes before Laszlo Kleinheisler scuffed in Darmstadt's second.
Sandro Sirigu made the points safe, lashing in a third after Wolfsburg were caught in possession.
Freiburg 2-1 Augsburg
(Philipp 65', Petersen 78' - Altintop 84')
Frieburg survived a late fightback from Augsburg to secure a valuable victory.
Maximillian Philipp prodded in from close-range from Vicenzo Grifo's cross from the left to give the hosts the lead.
That lead was doubled by Nils Petersen who stroked in from close-range after Freiburg cut open Augburg's defense with a slick passing move.
Halil Altintop pulled one back for Augsburg, thrashing the ball in from close-range, but it ultimately proved little more than a consolation.