Dortmund were the superior side during a captivating yet goalless first half, forcing Manuel Neuer into a succession of saves – though opposite number Roman Weidenfeller was also called into action more than once.
With an hour gone, Mario Mandzukic put the Bavarians ahead from close range, but a clumsy foul by Dante on Marco Reus allowed Ilkay Gundogan to level the scores from the penalty spot eight minutes later.
But with one minute of normal time remaining, Robben stole in to squeeze the ball over the line, and ensure that Bayern took home the trophy that eluded them in 2010 and 2012.
Mandzukic shook off competition from Mario Gomez to lead the line for the Bavarians, and in defence, Jerome Boateng edged out Daniel Van Buyten to partner Dante.
With Mario Gotze unable to face his future club because of a hamstring injury, Kevin Grosskreutz began on the flanks for BVB, while Mats Hummels recovered from a minor ankle complaint to start at the back.
Amid an electric atmosphere, Dortmund bossed the opening exchanges, and with 11 minutes gone, Jakub ‘Kuba’ Blaszczykowski delivered a sign of things to come with a half volley that flew off target.
Moments later, Robert Lewandowski drew the first save of the game from Manuel Neuer, who acrobatically diverted his 20-yard piledriver over the bar.
Kuba was soon at it again, calling Neuer into action at his near post, and the Bayern keeper’s reflexes were tested further when Reus and Sven Bender angled low efforts on target in quick succession.
Dortmund clearly had their Bundesliga rivals on the ropes, but breathed a sigh of relief themselves 25 minutes in when Weidenfeller reacted splendidly to tip away Mandzukic’s towering header.
And the BVB No. 1 did just as well to race off his line and deny Robben, who broke clear but ignored his team-mates to fire an attempt at goal.
Dante then picked up the first booking of the game for bringing down Kuba, but Franck Ribery escaped punishment for raising an arm towards Lewandowski.
Both keepers remained in the spotlight for the remainder of the half, Neuer denying Lewandowski from close range, before Robben botched another one-on-one, firing straight at Weidenfeller after a miscue by Hummels.
But Dortmund struggled to match the heights of their enterprising first half, as Bayern seemed a far more purposeful outfit after the break.
And right on the hour mark Mandzukic came up with the goods. Robben did the hard work, latching onto a smart Ribery through pass to beat Weidenfeller to the byeline and square for the Croatian, who guided the ball over the line.
But the lead would not last long. Dante caught Reus in the stomach with his leg inside the area, leaving the referee with little choice but to award a penalty – though the Brazilian was lucky not to receive a second yellow card.
Lewandowski, who missed a penalty in the last meeting between these two sides, took a backseat to Gundogan, who drilled confidently into the bottom corner, sending Neuer the wrong way.
It should have been 2-1 to Bayern in the 71st minute after a fine cross by Thomas Muller found Robben waiting to tap into an empty net at the far post, but somehow, Neven Subotic kept up to slide the ball away magnificently.
The trophy was there for the taking as the match entered its closing stages, and Weidenfeller had to remain on his toes twice to beat away long-range efforts from David Alaba and Bastian Schweinsteiger.
And in the 89th minute Robben did just that, breaking the offside trap to beat Weidenfeller with a deft shot, and finally send the trophy back to the Allianz Arena once again.