Marco Reus started and finished the goal fest in the Westfalenstadion, putting Dortmund in front after six minutes then netting their fourth four minutes from time.
Arjen Robben did his best to keep Bayern in the game, equalising early in the second half and then reducing the arrears after a Daniel van Buyten own goal and Ilkay Gundogan strike had put Dortmund back in the driving seat.
But it was Dortmund's night as they showed last season's treble winners, and their new coach Pep Guardiola, that they may not have everything their own way this season.
Bayern had Tom Starke between the posts for the injured Manuel Neuer and the absence of Germany's number one was soon felt as Dortmund took an early lead.
Robert Lewandowski's sweeping cross was met by a stooping header from Sven Bender which should not have caused Starke too many problems, but he flapped at the ball and only touched it to Reus, who nodded in.
The ball was in the back of the net again only two minutes later as Lewandowski raced through, but the offside flag had been raised long before the Pole slid the ball past Starke.
A succession of chances for Xherdan Shaqiri and Thomas Muller were thwarted by Roman Weidenfeller at the other end before Starke made amends for his error by denying Lewandowski with his foot.
Robben silenced the fans who booed his every touch, unforgiving after his Champions League final winner, by bringing Bayern back on terms in the 54th minute, meeting Philipp Lahm's cross unmarked to head in from six yards.
Almost from the restart, Bayern found themselves behind once again as Gundogan's cross was headed past Starke, who certainly could not be blamed this time, by his own defender Van Buyten.
Less than 60 seconds later, Gundogan struck again, picking his spot in the far corner of Starke's goal after turning inside Muller.
Robben replied again for the visitors, turning on the spot before firing past Weidenfeller with his favoured left foot, and Bayern sensed the chance to equalise.
Muller hit the top of the crossbar with a volley, teed up by Thiago, before gaps opened up at the back and Pierre-Emerick Aubameyang capitalised with his pace only to be denied by Starke.
Bayern did not learn from their mistake, however, and Aubameyang was put through again, this time setting up Reus to complete the scoring and earn Dortmund the first title of the 2013/14 season.