Former Dortmund striker Robert Lewandowski’s header was enough to win it for Pep Guardiola’s men, who took a step closer to a third straight Bundesliga title as they responded to Wolfsburg’s win earlier on Saturday.
Defeat means Dortmund will have to shelve their hopes of creeping into contention for a place in Europe for the time being.
With seven games of the season remaining, Jurgen Klopp’s men trail sixth-placed Augsburg, who have a game in hand, by five points.
The 92nd Bundesliga meeting between these two sides, and 14th clash between the two giants of German football in the last three years, was a rather tense affair to begin with.
Neither side were able to find their usual game, with plenty of congestion in midfield and numerous fouls breaking up play.
Bayern did look the more comfortable, albeit without showing their usual brilliance. Remnants of their 2-0 home defeat to Borussia Monchengladbach last time out seemed to be stuck in the mind.
It was not until 10 minutes before half-time that the first chance arrived, and it was duly taken by a determined Lewandowski.
Thomas Muller’s shot was parried by Roman Weidenfeller, but the ball looped up invitingly for Lewandowski to power in with a header.
The only thing lacking from the Pole, who inspired Borussia Dortmund to back-to-back Bundesliga titles prior to joining Bayern, was a celebration.
For Dortmund to succeed from that moment and pick up all three points was going to take some doing – Bayern have not thrown away a lead to lose a game in the Bundesliga in 118 German top-flight matches.
Klopp’s men certainly did not appear to be aware of that statistic as they came out fighting in the second half, urged on by the 24,454 fans packed as usual inside the South Stand towards which they were now playing.
Marco Reus had Dortmund’s first big chance of the game on the hour mark when he had only Manuel Neuer to beat, but he powered his shot into the side-netting.
Bayern were no longer managing to get across the halfway line with Dortmund increasing the pressure, but it was Neuer who denied Reus with a strong one-armed save low down at his right-hand post as time ran out for Dortmund to level.