Bayern beat Mainz to retain two-point lead
Goals from Mario Mandzukic and Bastian Schweinsteiger after 13 minutes looked to have put hosts Bayern in an unassailable position but an Adam Szalai penalty on the hour set the stage for a tricky finale.
Bayern, who welcome Valencia in the Champions League on Wednesday, were without wingers Franck Ribery and Arjen Robben who have minor injuries.
Coach Jupp Heynckes initially left 40 million euro signing Javi Martinez on the bench again at the start.
Bayern striker Claudio Pizarro came on late to equal the record for most Bundesliga matches by a foreign player at 336 but it was Toni Kroos who made sure of the points when he struck in stoppage time from a fine pass by Spain midfielder Martinez.
"We had a good start and played outstanding football for 30 minutes," Heynckes told reporters. "After that we were too passive and allowed the opponents to come to us."
Dortmund had no such nerves even though German Chancellor Angela Merkel was in the stands at the Westfalen Stadium.
A well-timed Mats Hummels header put the champions on track to maintain their 12-month unbeaten run at home. They also extended their league run to 31 games without defeat, closing in on the all-time record of 36 matches set by Hamburg SV.
Jakub Blaszczykowski fired in their second goal from the far post six minutes before the break and fellow Pole Robert Lewandowski then headed home in the 78th to take fourth-placed Dortmund to seven points from three games.
"This is the football we want and need to play to remain successful. The team showed what it can do," said Dortmund coach Jurgen Klopp, whose team host Ajax Amsterdam in the Champions League on Tuesday.
In an exciting derby Hannover 96 confirmed they were the top team in the north with a last-gasp 3-2 win over Werder Bremen to move into second place with seven points on goal difference.
Szabolocs Huszti scored twice for Hannover, including a superb stoppage-time bicycle kick, to hand his team their second win in three games but the Hungarian was then promptly sent off for a second booking during the celebrations.
Schalke 04 also moved up to seven points in third place with a 2-0 win at promoted Greuther Fuerth, who had former U.S Secretary of State Henry Kissinger, born in the Bavarian city, watching from the stands on a visit to his childhood club.
Germany international Julian Draxler broke the deadlock straight after the restart with a 25-metre missile as Schalke boosted their confidence ahead of Tuesday's Champions League game at Olympiakos.
Lewis Holtby sealed victory two minutes from time with his second league goal of the season, tapping in from close range.
Borussia Monchengladbach lost 3-2 at home to Nuremberg after going two goals down in 25 minutes. Luuk de Jong got one back and Granit Xhaka equalised in the 53rd but the outstanding Hiroshi Kiyotake swiftly put Nuremberg ahead again.
VfB Stuttgart secured their first point and moved off the bottom with a goalless draw at home to Fortuna Dusseldorf.