Milan were clinical to wait for the right moment, as they beat Barcelona 2-0 with goals from Kevin-Prince Boateng and Sulley Muntari.
The Rossoneri could not count on the cup-tied Mario Balotelli or injured Robinho, Mathieu Flamini, Antonio Nocerino, Daniele Bonera, Luca Antonini and Nigel De Jong. Stephan El Shaarawy and Giampaolo Pazzini shook off knocks to start with Boateng in a flexible 4-3-3 system. Barcelona only missed David Villa and Adriano, as Xavi Hernandez returned from a two-match absence.
This was the third year running that the two giants faced off in the Champions League, but Barca were unbeaten against Milan in seven matches. Coach Tito Vilanova is undergoing cancer treatment, so assistant manager Jordi Roura was on the bench for the Blaugrana.
Muntari volleyed over from distance, then Leo Messi shrugged off Philippe Mexes with a moment of magic only for his shot to be charged down. From that corner, Massimo Ambrosini shinned his clearance out again, but a promising counter-attack was ruined when Muntari got the pass wrong for El Shaarawy.
The Little Pharaoh did spring the offside trap, but his touch let him down so Carles Puyol was able to clear. From that corner, Boateng’s sweeping finish was inches past the back post with nobody ready to get the final touch.
Mexes went into the book for a foul on Messi, while Giampaolo Pazzini would’ve been clear on goal if the El Shaarawy through ball had been more accurate. Moments later El Shaarawy at full stretch just failed to get his toe to a Boateng assist across the face of goal.
Barca continued to keep possession, but at a snail’s pace and making little impact on Milan, who waited for the odd counter-attack.
Ignazio Abate flew down the right and his cross for El Shaarawy was well captured by Victor Valdes.
After the restart Dani Alves shoved over El Shaarawy for a free kick. It was touched on for Riccardo Montolivo, whose shot was charged down and Boateng smashed the follow-up in from the edge of the box. The ball did strike Cristian Zapata on the hand, but it ricocheted on to him from point-blank range and could not be considered intentional.
Milan’s tails were up and Boateng’s pass for El Shaarawy was intercepted, so ex-Udinese starlet Alexis Sanchez replaced a quiet Cesc Fabregas.
A Messi free kick was blasted well over the bar, but Pazzini was down in agony after a nasty clash of heads with Puyol. He recovered to test Victor Valdes with an acrobatic attempt with his back to goal, but was then replaced by M’Baye Niang.
Andres Iniesta unleashed a screamer from distance, but it whistled wide of the far post. Xavi also curled a free kick over the bar, as Barcelona continued to not trouble Christian Abbiati.
Milan doubled their lead with a well-worked goal. Niang was sent down the right, turned and crossed for El Shaarawy, who flicked it on again to the left where Muntari was unmarked to thump a volley into the ground across Victor Valdes.
Kevin Constant did brilliantly to cut off Pedro’s dangerous run in the box, but there was a big scare from a corner when Puyol was allowed a free header wide.
It could’ve been 3-0 in stoppages when Messi lost the ball to spark a counter, but Bakaye Traore’s finish was charged down.
Milan 2-0 Barcelona
Scorers: Boateng 57 (M), Muntari 81 (M)
Milan: Abbiati; Abate, Mexes, Zapata, Constant; Ambrosini, Montolivo, Muntari; Boateng, Pazzini (Niang 75), El Shaarawy (Traore 88)
Barcelona: Victor Valdes; Dani Alves, Piqué, Puyol (Mascherano 88), Jordi Alba; Xavi, Busquets, Fabregas (Sanchez 62); Pedro, Messi, Iniesta
Ref: Thomson (SCO)
Tickets for the Champions League final between Juventus and Real Madrid are still on sale with reseller Viagogo - Click to find out more