Returning Arjen Robben sealed the points form the penalty spot in the 85th minute as an influential substitute appearance from Franck Ribery - continuing to work towards full fitness after his recent injury problems - helped to turn the contest in Bayern's favour.
Poland international Robert Lewandowski, who swapped Signal Iduna Park for the Allianz Arena during the close-season, equalised in the 72nd minute after Marco Reus – the subject of the latest tug-of-war between German football's two heavyweights – had put Dortmund ahead.
Reus was the focus of much of the build-up after Bayern chief executive Karl-Heinz Rummenigge expressed a possible interest in signing the Germany international earlier in the week.
Dortmund coach Jurgen Klopp reacted coldly to Rummenigge's words at his pre-match press conference, but Reus offered the prefect riposte when he headed home after a blistering 32nd-minute counter attack.
The visitors were indebted to goalkeeper Roman Weidenfeller for preserving their lead before Lewandowski and Robben ultimately extended Dortmund's worrying Bundesliga slump that has now reaped just one point from their last seven matches.
Back in the Bayern side following a thigh complaint, Robben almost scored a brilliant sixth-minute opener as he ran onto Mario Gotze's backheel to rattle the crossbar via a vital tip Weidenfeller .
Klopp's team responded through Henrikh Mkhitaryan, who drove at a backpeddling Bayern defence to shoot narrowly past the right-hand post.
Weidenfeller clattered a clearance into the back of Mkhitaryan's head, forcing a spell of treatment for his team-mate, but the goalkeeper produced a far more useful contribution in the 24th minute - getting down to keep out a shot from Robben after a trademark cut-in from the flank.
Weidenfeller's opposite number, Manuel Neuer, produced a fine stop to thwart Pierre-Emerick Aubameyang in the 30th minute after Mkhitaryan had beaten the Bayern backline.
The champions did not heed that warning, though, and a minute later Shinji Kagawa sent Aubameyang racing away down the right, with his cross converted as Reus caught Mehdi Benatia flat footed.
Thomas Muller went agonisingly close to providing a decisive touch on Robben's low cross and then called Weidenfeller into action with a looping header as Bayern sought a quick response.
Lewandowski and Robben combined superbly to send Muller through on goal in the 38th minute, but Weidenfeller was equal to the task once more
A twisting, turning Robben had the goalkeeper committed five minutes before the break, only for Sven Bender to preserve Dortmund's advantage with a crucial block.
Weidenfeller's excellent performance continued after the break, the shot-stopper keeping out Lewandowski's effort with his feet in the 51st minute when his former colleague should have scored.
With an hour played, Sebastian Kehl found Kagawa only for the Japan international to skilfully turn Jerome Boateng and fire a low shot wide, while Benatia headed off target from close range.
The equaliser arrived when Neven Subotic – on at half-time for injured centre-back Mats Hummels – could only partially cut out substitute Ribery's throughball, allowing Lewandowski to lash home from the edge of the area.
And there was worse to come for Subotic as he clumsily hauled Ribery over for Robben to convert the decisive spot-kick with five minutes left, handing Bayern a four-point lead at the Bundesliga summit and leaving Dortmund languishing third-bottom.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.