Joshua Kimmich's goal in the 82nd minute clinched it for the hosts after Dortmund battled back from a two-goal deficit in a thrilling match at an empty Allianz Arena.
With Wednesday's win, Bayern have now captured the Bundesliga, German Cup, UEFA Champions League, and UEFA Super Cup in a three-month span. They can add a sixth trophy at the Club World Cup in the winter.
"It was not that easy especially in the second half. We led 2-0 but then made our own life difficult," said Bayern coach Hansi Flick, who took over in November and has enjoyed a sensational 10 months in charge.
"What counts is that we won the game. Everything else we will need to do better on Sunday [against Hertha Berlin in league play]," he added.
The German Super Cup traditionally pits the Bundesliga winners against the German Cup victors. With Bayern having claimed those titles, their opponent in this match were league runners-up Dortmund.
Bayern seemingly had the match under control with two goals by the half-hour mark from Corentin Tolisso and Thomas Muller. But Dortmund pulled one back before halftime when Julian Brandt beat Manuel Neuer on a low shot into the corner of the net.
Dortmund had plenty of chances to gain the upper hand, including a spectacular save by Neuer on Haaland's breakaway, but couldn't find their third of the night.
U.S. youngsters Giovanni Reyna and Chris Richards were second-half substitutes for their respective sides, with Reyna coming on for Dortmund and Richards making his third senior squad appearance for Bayern.
It was the last game before retirement for Bibiana Steinhaus, who in 2017 became the first female referee to oversee men's Bundesliga games.