League leaders looking clear at top of the table
Lucas Barrios opened the scoring on nine minutes only for Luiz Gustavo to volley an equaliser seven minutes later.
Nuri Sahin restored Dortmund's lead on 18 minutes with a beautiful curling effort, before Hummels gave the Bundesliga leaders some breathing space with his powerful header on the hour mark.
The result opens up a massive 16 point gap between Dortmund and third-placed Bayern with Juergen Klopp's men looking increasingly like champions.
Dortmund made a confident start to the game and shocked the home faithful when they took the lead on nine minutes. Bastian Schweinsteiger was casual in possession as Kevin Grosskreutz sneaked up on his German international team-mate before dispossessing him and sliding a precise through ball to Barrios.
The Argentinian-born hitman was cool, calm and collected as he slid the ball past Thomas Kraft from 12 yards out.
Bayern reacted well to going a goal down though and clawed their way back in the game with an equaliser on 16 minutes.
Franck Ribery curled a corner into the box and with Dortmund's defence late to react, Luiz Gustavo was on hand to volley the ball into the top corner from eight yards out - a terrific strike from the former Hoffenheim man.
Amazingly, the score was not level for long as Klopp's men took the lead again two minutes later.
Barrios did well to find Mario Goetze in space on the edge of the Bayern box. The 18-year-old wonderkid held the ball up before laying the ball back to Sahin, who curled a delicious effort into the far corner from 25 yards out.
The home side thought they had found another equaliser on 26 minutes but the goal was ruled out for offside. Thomas Mueller played Mario Gomez through on goal with the Bundesliga top scorer confidently slotting the ball past Mitchell Langerak,only for the flag to disallow the goal in what the home crowd viewed as a controversial decision.
First blood Dortmund | Barrios opens the scoring for the visitors
The second half was played at a less frenetic tempo in comparison to the first but there was to be a fourth goal in this game and it was the Bundesliga leaders who scored it on the hour mark.
Goetze's curling corner was met by an outstanding leap from Mats Hummels, as the former Bayern man headed the ball into the far corner, leaving Kraft completely helpless.
Louis van Gaal's men came close to pulling a goal back on 75 minutes as Daniel Pranjic did well to get the better of Piszczek down the left before crossing for Gomez, but the German international's strong right-footed shot was superbly diverted away by Mitch Langerak.
Die Roten continued to press and were inches away from scoring their second goal of the game on 79 minutes when Ribery's low 20 yard effort sailed narrowly wide of the post with the 'keeper left rooted to his spot.
However, Dortmund continued to threaten and came mightily close to making it four on 84 minutes when Robert Lewandowski met Goetze' deep corner at the back-post only for Pranjic to clear the ball unconventionally off the line.
The 3-1 victory is the first time BVB have defeated Bayern in 20 years and Klopp's first points against the Bavarian giants.