Arjen Robben and Thomas Mueller then struck in the closing five minutes to turn an evenly-balanced game into a rout.
"We are satisfied. We have won against the best counter-attacking team in the world," said Bayern coach Pep Guardiola.
"We played very well in the first quarter of an hour but not so well in the next 30 minutes."
Dortmund were left to rue a second-minute miss by striker Robert Lewandowski as well as a superb save by Bayern goalkeeper Manuel Neuer from Marco Reus when the score was 1-0.
The defeat left Dortmund third on 28 points, seven behind Bayern. Although only 13 games have gone, it is a huge gap to make up against a team that have not lost in their last 38 league matches.
Bayer Leverkusen, who won 1-0 at Hertha Berlin thanks to Stefan Kiessling's 13th goal of the season in all competitions, now look the most likely challengers as they are four points behind in second place.
Eintracht Frankfurt midfielder Johannes Flum scored the opening goals for both teams in an enthralling 3-3 draw with Schalke 04 as his side extended their winless league run to eight games despite a storming fightback.
Flum gave sixth-placed Schalke the lead when he headed Atsuto Uchida's cross into his own goal in the 14th minute and Cameroon defender Joel Matip compounded his agony by adding a second goal four minutes later.
The midfielder atoned for his mistake by heading in a Tranquillo Barnetta free kick in the 56th minute before Spaniard Joselu scored twice to put Eintracht in front.
The hosts were denied a first league win since September 14 when Benedikt Hoewedes fired home with four minutes left.
Two goals from Halil Altintop gave Augsburg a 2-0 victory at home to Hoffenheim while Nuremberg, the only winless team in the league, drew 1-1 with VfL Wolfsburg.
A Gelson Fernandes goal helped Freiburg defeat fellow strugglers Eintracht Braunschweig 1-0.
(Reporting by Brian Homewood; editing by Clare Fallon and Josh Reich)
Share
