They were 2-0 up shortly after the half-hour mark, courtesy of goals from Corentin Tolisso and Thomas Muller. However, Julian Brandt's venomous effort halved the deficit just before half-time.
Thomas Meunier missed a golden opportunity to equalise early in the second half but Erling Braut Haaland made no mistake with a well-taken finish after Thomas Delaney's defence-splitting pass minutes later.
The Norway international could have completed his brace but was denied by an excellent diving save as Manuel Neuer covered the angles well to thwart him.
There were then six substitutions and multiple stoppages in play for niggling fouls before Joshua Kimmich scored a late winner to cruelly end Dortmund's hopes of completing the comeback.
He stole possession in midfield from an unaware Delaney, played a one-two with Robert Lewandowski and after his initial shot was saved straight back into his path by Marwin Hitz, he flicked it in off his boot while falling to the ground.
The goal was his second in successive games, having scored during their surprise 4-1 loss at Hoffenheim last weekend. His quick thinking proved decisive as Bayern Munich won yet another piece of silverware.
Without further ado, here's a look at player ratings from a memorable clash between Germany's top two sides.
Bayern Munich player ratings against Borussia Dortmund
Manuel Neuer: 6.5/10
Manuel Neuer's distribution was iffy at times but there wasn't much he could have done to deny Brandt or Haaland's first strike. The Bayern Munich captain produced a big save at 2-2 which proved pivotal.
If they conceded, Dortmund probably would have gone on to win.
Instead, he showed composure and expert positioning to stay upright for as long as possible before thwarting the Norwegian from close-range.
Alphonso Davies: 7.5/10
Thomas Meunier had a difficult evening, and that was largely down to Alphonso Davies' determination to beat him whenever the opportunity arose.
The 19-year-old's ability to create chances from seemingly nothing came to the fore as he was heavily involved in both goals as Bayern Munich found themselves 2-0 up.
He ghosted past the Belgian effortlessly, raced forward and teed up Coman as Dortmund's corner delivery was cleared away. A few seconds later, Bayern Munich players wheeled away to celebrate Tolisso's opener from a well-executed counter-attack.
Less than 15 minutes later, Davies' cross to the far post was expertly finished by Muller - towering above Passlack to devastating effect as it crashed in off the woodwork.
His influence faded as Dortmund got back into the game but he never stopped running, and Muller came close to making it 4-2 after he won a free-kick late.
Lucas Hernandez: 7/10
Certainly the busier of Bayern Munich's centre-backs, Lucas Hernandez made an important early interception to dispossess Haaland as he advanced goalwards. That was the first of a few key interventions as Dortmund probed and threatened upon occasion.
He effectively stifled Reus on a few occasions with timely blocks and tackles while feeling hard done by after being booked by referee Bibiana Steinhaus for an overzealous challenge on Haaland in the second-half - despite winning the ball.
After a solid defensive showing, he laughed about it with her at full-time but would have wished for more support from centre-back partner Sule over the 90 minutes.
Niklas Sule: 6/10
As mentioned, Niklas Sule wasn't particularly busy - making just one tackle throughout. No wonder he had a game-high 97.1% pass completion rate, watching Hernandez do most of the work.
Dortmund players seemed as if they realised too late that the former Hoffenheim centre-back was more susceptible to pressure and caught him out on a few occasions, which didn't make for good viewing from a Bayern Munich perspective.
That being said, he's not exactly first-choice in this position, and this display rather amplified why.
Benjamin Pavard: 6.5/10
Benjamin Pavard made two tackles and interceptions, one clearance and created a key pass in an evening where he was tested both aerially and in possession.
He largely succeeded during both tests but lost half a mark for surrendering the ball as Dortmund pressed high and earned their reward just before half-time.
Corentin Tolisso: 7.5/10
Corentin Tolisso took his goal well, created two key passes and contributed when called upon - especially in transition on the counter-attack.
However, it was the subtle movements and actions which really caught the eye from the World Cup winner here.
He retained possession well (92.9%), showed good spatial awareness and game-management to win both fouls and set-pieces while displaying a turn of pace to help in certain precarious situations.
Javi Martinez: 6.5/10
By contrast, UEFA Super Cup matchwinner Javi Martinez was the less mobile, safe but reliable midfield partner alongside Tolisso.
He completed 91.2% of his passes, made one tackle and interception but was largely on the periphery in a game that allowed him to sit deep without consequence.
Man of the Match - Joshua Kimmich: 8/10
Joshua Kimmich had five shots, from varying distances and situations, so perhaps it's not surprising to know he proved the matchwinner for Bayern Munich here.
He headed into Hitz's hands for the game's first real chance after good work from Hernandez and Pavard but was always quick-thinking and relished the freedom to create further forward.
He almost caught out Akanji as Muller lurked alongside the Swiss international, before coming close from distance after Hitz gobbled up his free-kick delivery.
You could see him scanning for forward options but there was no movement at a time where Bayern Munich needed it most, with the scores still finely poised at 2-2.
So it's unsurprising that he took it into his own hands: stripping Delaney of possession effortlessly in midfield before teeing up Lewandowski - who had been calling for that sort of service all game long.
They exchanged passes and despite being under pressure by a sprinting Piszczek, his initial effort was blocked straight back into his path - allowing him to finish with a great moment of improvisation. Where can he not play?
Kingsley Coman: 5/10
Fouled on four separate occasions, Kingsley Coman struggled to really influence the game, and it wasn't surprising to see his number on the electronic board as Hansi Flick opted for an early change in the second half.
He completed two dribbles but lost possession ten times, and Meunier had a straightforward time defending against him down the flank. He was too predictable and lacked the same explosiveness or determination that Davies had by contrast.
Thomas Muller: 7/10
Thomas Muller took his goal well and just like creator Davies, was full of running throughout - despite drifting in and out of the game at times.
His passing (78.4%) could have been better but he made four of his five long balls and was regularly scanning for teammates in space to help set up opportunities.
Robert Lewandowski: 7/10
Ultimately Robert Lewandowski won't be credited with either but he technically had two assists on a night where his shooting boots weren't needed - even though you could sense he wanted a goal himself.
He teed up Tolisso, whose initial effort crashed off the crossbar, while playing a perfectly-weighted reverse pass into Kimmich for the winner.
He was visibly frustrated by his teammates' inability to find him in space and was dispossessed by Akanji in the build-up to Dortmund's equaliser in an evening when he didn't have much time on the ball but still created chances with it.
Serge Gnabry: 6.5/10
Serge Gnabry provided a more problematic injection of pace and guile in 35 minutes than Coman did. He retained possession well and offered dependable width.
Chris Richards: 6.5/10
Chris Richards only had 15 minutes plus stoppages but did his reputation no harm, making a handful of necessary interceptions when called upon as Dortmund went in search of a late equaliser.
Joshua Zirkzee and Jamal Musiala: N/A
Both weren't on long enough to justify a fair rating.