Dortmund's first win in Munich since 1991 gave them a 13-point lead over second-placed Bayern Leverkusen, who play on Sunday, and moved them 16 clear of Bayern.
Lucas Barrios put Jurgen Klopp's side ahead in the ninth minute before Luis Gustavo brought Bayern level in the 16th minute.
Nuri Sahin put Dortmund back in front within two minutes and Mats Hummels sealed the three points after an hour to leave Bayern languishing in fourth.
Roman Weidenfeller failed a late fitness test, meaning Mitchell Langerak made his debut in the Dortmund goal.
He did not have much to do early on, though, as the league leaders started brightly with Robert Lewandowski volleying just over from 11 yards after Bastian Schweinsteiger had left him in space at the far post.
It was not Schweinsteiger's evening and his error in the midfield gifted possession to Kevin Grosskreutz, who slid the ball into the path of Barrios, who needed just one touch to beat Thomas Kraft.
Bayern levelled in the 16th minute with Gustavo netting his first goal for the club with a coolly-taken volley from eight yards following a corner.
However, Dortmund were back in front within two minutes following the sort of counter-attacking goal which has become their trademark.
Barrios broke clear and held off Arjen Robben before Mario Gotze took over.
The 18-year-old pulled the ball back to Sahin, who looked up and picked his spot, curling the ball into the top corner from 20 yards.
Mario Gomez saw his goal correctly disallowed for offside in the 26th minute before Thomas Muller's shot was deflected over the crossbar.
Another mistake by Schweinsteiger, who struck his clearance against Anatoliy Tymoschuk, nearly gifted Barrios his second, but he somehow lifted the ball over an open goal from close range.
Kraft then denied Gotze as Dortmund continued to play confident football, and from the resultant corner, they scored a third to seal the points.
Former Bayern defender Hummels met Sahin's ball in with his head from seven yards and sent the ball into the top left-hand corner.