Polish international Jakub Blaszczykowski's shot from outside the box might have sailed harmlessly over the bar in the 10th minute, but it signaled the start of an impressive spell.
Lewandowski, much sought after, made a fine run inside the box before he ran out of room and was unable to deliver a cross.
A minute later, Lewandowski's curled effort from distance was comfortably pushed over the bar by Bayern keeper Manuel Neuer.
Neuer, the German No. 1, would be busy in the next 10 minutes, stopping Blaszczykowski with his legs from close range -- his best save of the evening -- keeping out Marco Reus' left-footed strike and thwarting Sven Bender.
Neuer was unusually busy, since he averaged a mere two saves per game all season.
Such was Bayern's frustration that winger Franck Ribery used an arm to cast aside Lewandowski. Former Liverpool manager Graeme Souness, an analyst for British television, said Ribery deserved a red card.
Italian referee Nicola Rizzoli, however, didn't even show him a yellow. Rizzoli would be in the spotlight later.
Bayern finally worked its way into the game midway in the half.
Ribery found himself in space on the left and put in an inviting cross for striker Mandzukic -- who started ahead of German international Gomez. His header was tipped over the bar by Roman Weidenfeller.
On the ensuing corner, midfielder Javi Martinez leapt the highest, though his header didn't hit the target.
Now Weidenfeller was busy.
He made himself big to deny Robben and near the end of the half, defender Mats Hummels misjudged a ball in the air to hand the alert Robben a second chance. Weidenfeller utilized his face to keep the match scoreless at the interval.
Dortmund didn't start as well in the second half, yet wasn't put under any pressure by Bayern.
That changed in the 59th minute, when Mandzukic's header fell straight to Weidenfeller. The shot was tame, but Dortmund's frailty in the air was again exposed.
Bayern took the lead a minute later, as Robben finally dealt with Weidenfeller.
When Weidenfeller charged off his line, Robben went around the German and sent a low cross to Mandzukic, who had the simplest of tap ins.
Bayern was on its way. Or was it?
Needing to stay tight at the back for the next 10 minutes, Bayern defender Dante gave Dortmund a lifeline. He completely missed his clearance in the box and kicked Reus in the stomach.
Rizzoli awarded Dortmund the penalty, but Dante -- already booked -- didn't receive a second yellow.
Stopped three weeks ago by Neuer on a penalty, Lewandowski gave way to IIkay Gundogan. The diminutive midfielder sent Neuer the wrong way in the 68th.
Bayern fans must have thought it was déjà vu, especially when Dortmund defender Neven Subotic made a last-ditch clearance with Robben about to pounce from a yard out.
Both teams continued to press forward, and Weidenfeller dived to his left to stop David Alaba. Rizzoli waived play on when Thomas Muller felt he was impeded by Subotic, the last man, but Bayern's angst didn't last long.
With Dortmund's defense unable to clear, Robben waltzed into the box and deftly wrong-footed Weidenfeller.
It was redemption for Robben and Bayern.