Argentine striker Milito embarrassed each of Bayern’s centre-backs in turn as Bayern’s vulnerable defensive core was ruthlessly exposed.
In their first Champions League final since 1972, Inter won their third European title and first since 1965. They also became the first Italian team to achieve the treble of Serie A, Italian Cup and Champions League.
Despite a bright opening, Bayern were denied their own treble hopes for the second time having also missed out in 1999 when Manchester United beat them in the final minutes of the match.
The victory was also the perfect way for Jose Mourinho to sign off as Inter coach with the Portuguese expected to be named the new coach of Real Madrid next week.
Bayern coach Louis Van Gaal, who once worked with Mourinho at Barcelona, was not impressed by the Italian side’s tactics.
“Inter are a hard team to play and I think we played attractive football,” said the Dutchman. “We tried to attack in tight spaces. We choose to play offensively. Inter won and they have every right to play the way they want.”
Bayern came closest early on as Arjen Robben beat Cristian Chivu and Walter Samuel with some wing wizardry down the right but Ivica Olic prodded his cross wide of the near post. Hamit Altintop then created space on the edge of the Inter box on 13 minutes but his shot was deflected for a corner. Bayern had a decent penalty chance when Daniel Van Buyten’s header hit Maicon’s arm.
Wesley Sneijder tried his luck with a 40-yard free-kick which skimmed off Altintop’s head but goalkeeper Hans-Jorg Butt was alert to punch clear.
Robben had an opportunity with Inter bodies around him but he hurried it and shot off target.
Milito’s first goal on 35 minutes came against the run of play and from a defensive lapse as Inter targeted the fragile heart of Bayern’s defence.
Goalkeeper Julio Cesar punted the ball upfield and Milito held off Martin Demichelis to flick it on to Sneijder.
The Argentine forward then turned and left his compatriot on the wrong side of goal before taking Sneijder’s return pass and exploiting the gap behind Demichelis to clip the ball over Butt.
Inter should have scored a second before the break when Milito dragged Demichelis out of position again, wide left this time and played in Sneijder through the middle but the Dutch playmaker shot straight at Butt.
If the nervy and cautious first half was a disappointment, the start of the second quickly made up for that.
From the kick-off Bayern opened up Inter thanks to a flick by Olic to Altintop, who then slipped in Thomas Muller but he overstretched as he shot and hit Cesar’s legs.
A minute later Samuel drove out of defence, played the ball to Goran Pandev and he played it out to Milito who cut inside Van Buyten and pulled the ball back for Pandev, but the Macedonia forward’s left-foot curler was tipped over acrobatically by Butt.
Lucio then took an unnecessary risk in his own box and put Maicon in trouble with the full-back losing the ball to Altintop who shot narrowly wide.
Sneijder had a couple more free-kick chances but shot over with the first and Butt easily saved the second.
Up the other end Esteban Cambiasso headed a high bouncing Muller effort off the line before Cesar made a one handed save to stop a Robben inswinger from wide right that was heading for the top corner.
Samuel then made a couple of timely blocks to deny Muller as Bayern pressed. But Milito settled the match 20 minutes from time.
He beat Van Buyten one-on-one, dropped a shoulder before stroking the ball home past Butt with aplomb for his sixth goal in the tournament this season.
Bayern tried to press late on, with coach Louis van Gaal throwing on forwards Miroslav Klose and Mario Gomez.
But Inter held out with the help of late substitute Marco Materazzi, who was given two minutes so Milito could be taken off to a rousing reception from the Inter fans.