Dortmund had a four-point cushion to the Bundesliga champions heading into the clash and their seven-point gap will now give them real hope of a title challenge, although they were spared a last-gasp Lewandowski leveller by a correct offside call.
The German champions will enter this match off the back of a win, however, having beaten AEK Athens 2-0 in the Champions League on Wednesday night.
Bayern slowly started to take control and Lewandowski eventually made the pressure count on 26 minutes, crashing a bullet header from a cross by Serge Gnabry past Dortmund's stand-in keeper, Marwin Hitz.
Franck Ribery nearly made it two just after the half hour, but he fired straight at goalkeeper Marwin Hitz.
Dortmund regrouped at the interval and were awarded a penalty just three minutes into the second half. A neat interchange of play led to Joshua Kimmich standing the ball up for an unmarked Lewandowski to nod home from just a few yards out. Sancho played a pass into the right side of the area for Reus, who touched the ball past the diving Neuer, the goalkeeper's momentum bringing the forward down.
Reus should have scored his second shortly afterward, but after sidefooting past Neuer, Kimmich was on the line to clear.
Lewandowski then thought he had a hat trick, but the flag was up for offside after he found the roof of the net with a powerful strike.
But Reus made no mistake in the 67th minute when he superbly guided home Lukasz Piszczek's cross first time to make it 2-2.
The turnaround was complete in the 73rd minute when Alcacer sprung the offside trap from Axel Witsel's pass, and coolly dinked a shot over Neuer to put Dortmund in front for the first time.
Thomas Muller then fired well over as Bayern looked for an immediate response.
Can Kovac make history and turn around Bayern's rotten form, or will Dortmund prove too strong for a side accustomed to winning the Bundesliga title every season?