After the first 0-0 draw in a DFB-Pokal final since 1992, Germany's top two teams were ultimately separated by goals from Arjen Robben and, right at the death, Thomas Muller in Berlin's Olympiastadion.
Having already clinched the UEFA Super Cup, FIFA Club World Cup and Bundesliga, it was a fourth trophy for Bayern coach Pep Guardiola to crown his first season in charge of the Bavarians.
Roman Weidenfeller knew he was in a cup final in the fifth minute when he blocked Thomas Muller's shot with his face as Bayern quickly got into their habitual possession game.
Dortmund were pegged back in their own half, but Bayern were not able to create enough danger and were almost caught out when a rare misplaced pass, from Dante, nearly put Dortmund in, but Robert Lewandowski's pass towards the unmarked Marco Reus was intercepted by Javi Martinez.
Bayern suffered a setback midway through the first half when Philipp Lahm picked up an injury. After several minutes of treatment and an attempted return to the field, the Bayern and Germany man had to hoist the white flag with Franck Ribery replacing him.
Guardiola's men had a good chance early in the second half with Muller meeting Ribery's cross, but Weidenfeller made a good reflex save with his foot to deny him.
Ten minutes later, Dortmund thought they had taken the lead, and they probably should have.
Lewandowski flicked a header on towards Mats Hummels, whose header appeared to have crossed the line, but Dante's clearance was deemed by referee Florian Meyer to have been on the line and the goal was not given.
It was a blow Dortmund failed to recover from as Bayern regained the upper hand with Robben and Ribery both going close before the game entered extra-time.
The first half of extra-time suggested penalties would be needed to decide this game, but then a mistake let Bayern in to take the lead.
Weidenfeller's bid to launch a quick counter-attack backfired as his thrown ball out to his left was picked up by Jerome Boateng, whose cross was met by the hungriest player inside the penalty area - Robben - whose shot may not have been irresistible, but it was still enough to beat Weidenfeller's clumsy attempt to save on the line.
The game suddenly opened up with Dortmund forced to attack.
Robben, the man whose goal beat Dortmund a year ago in the final of the Champions League, wasted the chance to seal victory in a one-on-one with Weidenfeller.
Marco Reus' deflected effort in stoppage time was the closest Dortmund came to forcing a penalty shoot-out before Muller raced through, took the ball past Weidenfeller and sealed Bayern's double.