Bayern Munich missed the chance to move eight points clear at the top of the Bundesliga table as they were held to a draw by Borussia Dortmund in a pulsating game.
Having dominated the first half without making a breakthrough, Bayern fell behind when Maximilian Beier evaded his marker to head through the legs of Jonas Urbig with the visitors’ first effort on target.
Centre-back Waldemar Anton diverted a cross against the underside of his own crossbar as Dortmund rode their luck, but the introduction of Serge Gnabry changed the home side’s fortunes.
The former Arsenal forward’s run led to Raphael Guerreiro finding the equaliser against his old club, and Bayern completed the turnaround four minutes later – Gnabry bending beyond Gregor Kobel after beating two players with ease.
However, eighth-placed Dortmund – who remain six points from the Champions League places – earned a draw, Anton turning home the rebound after Serhou Guirassy’s acrobatic effort was saved into his path.
Despite dropping points, Vincent Kompany’s Bayern remain six points clear with five matches left, as closest rivals Bayer Leverkusen could only draw at home to Union Berlin earlier on Saturday.
While both sides suffered Champions League quarter-final first-leg defeats in midweek, Bayern played at home on Tuesday while Dortmund travelled to Barcelona 24 hours later.
That showed early on, Harry Kane twice thwarted by Kobel in a first half where the hosts seemed to have more energy.
Dortmund’s opener was a smash-and-grab and came as a result of some lackadaisical defending from Kim Min-jae, but it looked like the direct running of Gnabry would swing the result in Bayern’s favour.
With the score at 2-2 both teams had chances to win it, former Brighton midfielder Pascal Gross lobbing just over for Niko Kovac’s side and ex-Crystal Palace winger Michael Olise sidefooting wide under little pressure.
Dortmund have the unenviable task of overturning a 4-0 deficit against Barcelona in their Champions League second leg on Tuesday, with Bayern facing Inter Milan in Italy on Wednesday – trailing 2-1 from the first leg.