The champion needed a dramatic equalizer from the 20-year-old to rescue a draw against the Bavarians, who had gone ahead through Toni Kroos
The first hour or so of the match was an even affair, with both sides registering some decent chances, but ultimately cancelling each other out. However, Toni Kroos put his side ahead on 66 minutes, only for Mario Gotze to equalise soon after.
The match started at a frantic pace, with Bayern desperately trying to notch an early advantage, as they had done when these two sides met in the Super Cup in August. Franck Ribery screwed a right-footed volley wide after Neven Subotic partially cleared a Kroos free kick to him inside three minutes.
Seconds later, though, Bayern almost went behind when a suicidal backpass from Holger Badstuber let Marco Reus put Manuel Neuer under pressure, but when the former Gladbach man collected the ball he could only find the heavily-marked Robert Lewandowski.
Ribery was involved once more a few minutes later, putting a lovely ball across the face of goal which Marcel Schmelzer tapped behind for a corner with a red shirt looming. Soon after, Subotic made a fantastic tackle to deny Thomas Muller, who may well have scored were it not for the Serb's block.
It seemed like a matter of time before the deadlock was broken, but barring a shot from Kroos which went high and wide, the openings became rarer and rarer, with a lengthy stoppage after an injury to Badstuber slowing the pace of the game.
Within seconds of the break, though, the visitors almost took the lead in superb fashion. Mats Hummels strode out of defence to collect the ball and sprayed it forward to Reus, who took it down superbly and unleashed a ferocious left-footed volley which Neuer did excellently to parry.
After the restart, Hummels had a golden opportunity of his own to put his side ahead. A quickly-taken free kick found the former Bayern defender unmarked and onside, and he attempted to pad it beyond Neuer, only for the keeper to pad it away.
Dortmund had started the second half with far more impetus than it had the first, and a perfect through-ball from Gotze found Reus, who was forced wide by Neuer, and could not quite force it across the face of goal.
The duo then combined once more, but this time Neuer was on hand to save the 20-year-old's close-range header after an excellent right-wing cross. At the other end, the closest Bayern had come to getting on the scoresheet was a Mandzukic volley which Roman Weidenfeller got himself behind with ease.
Gradually, though, they began to take control once more. Ribery attempted to scissor-kick a Philipp Lahm cross into the corner, only to scuff the ball, before Muller had credible appeals for a penalty denied after a goalmouth scramble.
Eventually, they got their breakthrough. Muller fed Kroos on the edge of the box and the 22-year-old sidestepped both Hummels and Subotic, before firing a crisp shot beyond Weidenfeller's outstretched palm.
The lead stood for just six minutes, though. Jakub Blaszczykowski bought a corner off Jerome Boateng, and the resulting set piece fell to Gotze, who drove a shot through a sea of bodies and into the bottom corner.
BVB spent much of the last 10 minutes defending for dear life, with Muller firing a great left-footed effort just wide, before almost fooling Weidenfeller with a cheeky shot that was disguised as a cross.
The 32-year-old keeper was forced into excellent saves to deny Kroos, who had been played in by Mario Gomez, and Javi Martinez, who met a corner with a fantastic header.
In the end, though, both sides held firm to secure a draw which suits the hosts far better than the visitors.