Olivier Giroud’s first-half strike proved the difference as Milan battled through to the UEFA Champions League last four with a 1-1 draw at Napoli to secure a 2-1 aggregate triumph.
Ismael Bennacer’s goal last week at San Siro snatched a 1-0 quarter-final lead and Milan deservedly doubled their aggregate advantage in the first half on Tuesday in Naples.
Giroud had an earlier penalty saved by Alex Meret but made amends soon after with his 43rd-minute opener after Rafael Leao’s incredible run to create the goal.
Victor Osimhen’s stoppage-time strike offered Napoli hope after Khvicha Kvaratskhelia’s 82nd-minute penalty was saved by Mike Maignan, but Milan held on to reach their first Champions League semi-final since 2007.
Matteo Politano twice whistled early efforts narrowly wide but the Rossoneri should have struck first when a clumsy Mario Rui lunge on Leao offered Milan a glorious chance from 12 yards.
Yet Meret guessed the right way to deny Giroud’s spot-kick towards the bottom-right corner, before again thwarting the France veteran after another tame effort from a gilt-edged opportunity.
The Milan striker made no mistake next time round as Leao showed a remarkable turn of pace down the left before rolling across to Giroud for the simplest of tap-ins.
Victor Osimhen saw a strike ruled out for handball on the stroke of half-time and Kvaratskhelia blasted just over after the interval as Napoli searched for a response.
A Fikayo Tomori handball afforded Napoli a late opportunity to fight back into the clash, though Maignan dived low to his right to thwart Kvaratskhelia.
That penalty miss proved Osimhen’s late header from Giacomo Raspadori’s cross in vain as Milan battled through to the last four.
Napoli player ratings (4-3-3)
GK: Alex Meret – 6/10 – Perfectly read Giroud’s penalty even if it was at a comfortable height for the keeper.
RB: Giovanni Di Lorenzo – 3/10 – Never seemed capable of getting the better of Leao.
CB: Amir Rrahmani – 4/10 – Often the free man when carrying the ball forward, Rrahmani couldn’t stop Leao in full flow – although, few can.
CB: Juan Jesus – 4/10 – Took a blow to the head but was groggy with his passing before that.
LB: Mario Rui – N/A – Gave up a needless penalty before limping off in the first half.
CM: Tanguy Ndombele – 5/10 – Had enjoyed an excellent half before his miscontrol gifted Leao the chance to hare forward.
CM: Stanislav Lobotka – 5/10 – Tasked with covering large swathes of space when Milan tried to break, the pint-sized ratter enjoyed mixed success.
CM: Piotr Zielinski – 3/10 – Struggled to exert a significant influence on proceedings.
RW: Matteo Politano – 7/10 – At the heart of Napoli’s opening flurry of attacks but also had his big night cruelly cut short by injury.
ST: Victor Osimhen – 5/10 – Napoli’s great hope struck too late.
LW: Khvicha Kvaratskhelia – 5/10 – Saw plenty of the ball, digging deep into his bag of tricks which earned him more joy after the break.
Mathias Oliveira (34′ for Rui) – 4/10 – Rarely offered Kvaratskhelia any support down the left flank.
Hirving Lozano (34′ for Politano) – 5/10 – Proved to be much more predictable than Politano.
Eljif Elmas (63′ for Ndombele) – 5/10
Leo Ostigard (75′ for Rrahmani) – N/A
Giacomo Raspadori (75′ for Zielinski) – N/A
Luciano Spalletti – 3/10 – Clearly knew what Milan would do – he and Jesus warned of the opposition counter-attacks pre-game – but couldn’t send out a side to combat that obvious threat.
Milan player ratings (4-2-3-1)
GK: Mike Maignan – 8/10 – Unerringly composed with the ball at his feet, Maignan’s advanced positioning also limited Napoli’s threat with balls over the top.
RB: Davide Calabria – 8/10 – Revelled in the fiercely (and fairly) contested individual duel with Kvaratskhelia.
CB: Simon Kjaer – 8/10 – A towering figure marshalling Milan’s military-like backline.
CB: Fikayo Tomori – 6/10 – Stood up to the mentally and physically draining task of keeping tabs on Osimhen – unfortunate to give away a soft spot kick.
LB: Theo Hernandez – 6/10 – Limited in his raids forward, keeping focussed on holding his defensive position.
CM: Rade Krunic – 6/10 – Solid if unspectacular at the base of Milan’s midfield.
CM: Sandro Tonali – 6/10 – At times a little too overeager with his pressing but would have done his grandmother – who religiously watches every game even though she’s not fussed on football – proud.
AM: Ismael Bennacer – 7/10 – Shadowing Lobotka to clog up Napoli’s buildup, Bennacer dropped onto Ndombele when Milan shifted even deeper, leaving Giroud to mark the hosts’ pivot.
RW: Brahim Diaz – 5/10 – Wandered infield but remained on the periphery of the contest.
ST: Olivier Giroud – 6/10 – Squandered two golden opportunities before tucking in an unmissable opening.
LW: Rafael Leao – 9/10 – Simply unstoppable when he has the time and space to break into his mesmeric stride.
Junior Messias (59′ for Diaz) – 5/10
Divock Origi (69′ for Giroud) – N/A
Stefano Pioli – 7/10 – Set his side up to strike in transition from the off, leaning more heavily upon the tactic after their lead was extended.
Player of the match – Rafael Leao (Milan)
Clicks on ADS 👇👇.