The defeat leaves Bayern 16 points behind Dortmund and, with 10 games left, Dortmund are firmly on course for their first German league title since 2002 while the shield is almost certain not to find it's way to Munich this season.
Dortmund's young team -- their average age is just 22.3 years -- proved their status as Bundesliga winners-in-waiting with victory in Bayern's backyard and their second win over Munich this season.
Goals by Germany defender Mats Hummels, Paraguay's Lucas Barrios and Turkey midfielder Nuri Sahin sealed Borussia's 18th win from 24 league matches, while Luiz Gustavo scored what proved to be Bayern's first-half consolation goal.
With second-placed Bayer Leverkusen playing Sunday, Dortmund are 13-points clear at the top of the table.
Having already beaten Bayern 2-0 in Dortmund last October, Borussia took the lead at Munich's Allianz Arena after capitalising on a rare mistake by Germany's Bastian Schweinsteiger in midfield.
When the Germany star stumbled after receiving a pass, Dortmund's Kevin Grosskreutz pounced on the loose ball and put Barrios into space to fire home after just nine minutes.
A knee injury to Borussia's captain and goalkeeper Roman Weidenfeller had handed 22-year-old Australian Mitchell Langerak his German league debut in front of a sell-out 66,000 crowd, having joined Dortmund last July.
Langerak, who was solid throughout, conceded his one and only goal on 15 minutes when Gustavo volleyed home a Franck Ribery corner to equalise.
But Sahin put Dortmund back into the lead when he curled home his shot just three minutes later.
An effort by Bayern's Mario Gomez, chasing his 29th goal in 33 games, was ruled offside when he beat Langerak on 25 minutes as it finished 2-1 at half-time.
Hummels made sure Dortmund left Munich with three points following a bullet header from a Mario Goetze corner with an hour on the clock.
Earlier Hanover went third in the Bundesliga with a 1-0 win at Hamburg-side St Pauli.
This was Hanover's 14th win of the season from 24 matches and keeps them on course for a top-five finish and a place in Europe next season.
Nuremberg were denied their fifth straight win after Schalke's Raul netted his 14th goal of the season for the Royal Blues in Gelsenkirchen to seal a 1-1 draw.
Hoffenheim were beaten 2-1 by Mainz after Columbia midfielder Elkin Soto scored a late winner for the guests.
Germany striker Lukas Podolski netted an 88th-minute left-foot shot which sealed Cologne's 1-0 win over Freiburg and leaves his side now 11th in the table and five points from the bottom three. This was Cologne's fifth-straight win at home.
Hamburg were held to a 1-1 draw by Kaiserslautern.
On Friday, two goals by Brazilian midfielder Diego helped Wolfsburg push themselves further from the Bundesliga's drop zone after a valuable 2-1 win over struggling Moenchengladbach on Friday.
Moenchengladbach pulled back a second-half consolation goal, but after their 15th defeat in 24 games, remain rooted to the bottom of the table.