Olivier Giroud's first-half effort ultimately proved decisive as Milan reached the last four of the UEFA Champions League for the first time in 16 years.
Article top media content
Seven-time winners AC Milan are through to the UEFA Champions League semi-finals for the first time since 2007 after a 1-1 draw with Napoli secured their progress.
22': Giroud spot kick kept out by Meret
43': Rafael Leão sets up Giroud for opener
82': Maignan saves Kvaratskhelia penalty
90+3': Osimhen scores with thumping header
Match in brief: Milan play it cool
Napoli were just as enterprising from the off as would have been expected from the dynamic Serie A leaders. Though Khvicha Kvaratskhelia, Victor Osimhen and Matteo Politano all threatened early on, the visitors always looked prepared to bide their time and it was little surprise when they won a penalty after a swift counterattack.
Giroud was denied by Alex Meret from the spot and again frustrated by the home keeper five minutes later, but could make no mistake just before half-time. Rafael Leão took the bulk of the credit, though, picking up the ball deep inside his own half before slaloming past a series of defenders, drawing out Meret and squaring for his team-mate to slot in.
Kvaratskhelia nearly weaved his own magic early in the second half, but another two chances of his own went begging. Mathías Olivera was next to be culpable for the hosts when he headed off target; Napoli continued to seek a route through but Milan were comfortable, composed, unaffected by what was at stake.
All that might have changed with eight minutes left when Fikayo Tomori was adjudged to have handled inside the area, but Kvaratskhelia's penalty was superbly saved by Mike Maignan to pile on further frustration for Luciano Spalletti's side.
Mathías Olivera's wayward header from point-blank range looked to have confirmed it was not to be their night, even if Osimhen's added-time effort did briefly make for a nervy conclusion.
PlayStation® Player of the Match: Rafael Leão (Milan)
"Sublime in his attacking actions. Won a penalty and made a Maradona-like assist for the first goal – particularly appropriate considering the venue. Napoli could not handle him and Milan used his talent and form to reach the semi-finals."
UEFA Technical Observer panel
Vieri Capretta, Napoli reporter
It simply wasn't Napoli's night. Milan's gameplan was perfectly executed, Osimhen saw little of the ball and every time any player had a chance the shots would be either off target or saved by Maignan. Napoli were probably the more dominant side over the two legs, but Milan took their chances when they needed to. One of the most exciting sides in this season's Champions League seemed to run out of steam when it mattered most.
Paolo Menicucci, Milan reporter
Seven-time European champions Milan are back in the last four after Leão's sensational assist for Giroud made the difference against Napoli. The Rossoneri confirmed their defensive solidity, so nearly securing a sixth consecutive clean sheet in the competition, and have one of the world's best goalkeepers in Maignan. Only a header by another in-form player in Osimhen broke their rearguard effort, but it was too little, too late.
Rafael Leão, Player of the Match: "I want to keep dreaming like all the players at Milan: we want to win the Champions League and we are one step closer to doing so. We have to try until the end."
Stefano Pioli, Milan coach: "Congratulations to these guys. There will be two more beautiful, stimulating and very difficult games in the semi-finals. We have done a lot and we absolutely do not want to stop."
Davide Calabria, Milan captain: "I am really proud of this team. We ran for each other in a spirit of sacrifice. When you perform like this, it's no coincidence that you win, even against big teams like this strong Napoli side."
Luciano Spalletti, Napoli coach: "Congratulations to Milan and also to my players. We had a great Champions League. We came to these games a bit out of steam, and we paid for our inexperience."
Peter Crouch, BT Sport
"What an opportunity to get to a final this is for Milan; I'm not sure when they'll get a better one."
- Milan are into the last four of the European Cup for the 13th time; their record is W9 L3. Only Real Madrid (32), Bayern (20) and Barcelona (17) have featured in more semi-finals.
- Milan will make their seventh last-four appearance in the Champions League era, matching Juventus's Italian record.
- Osimhen's late goal was the first Milan had conceded in six Champions League matches, their best run of clean sheets in the competition since they kept seven in a row in 2004/05.
- Giroud (36 years 200 days) is the second-oldest French Champions League scorer after Laurent Blanc, who found the net against Olympiacos aged 36 years 338 days in 2002.
- Napoli remain unbeaten in 13 Champions League home games (W9 D4), since a 4-2 defeat by Manchester City on Matchday 4 in 2017/18.
- The Partenopei have failed to score in only one of their last 26 Champions League home games.
- Osimhen has scored 26 goals in 31 games in all competitions this season.
Rafael Leão – 10 points
Alex Meret – 8 points
Mike Maignan – 7 points
Napoli: Meret; Di Lorenzo, Rrahmani (Østigård 74), Juan Jesus, Mário Rui (Olivera 34); Ndombélé (Elmas 63), Lobotka, Zieliński (Raspadori 74); Politano (Lozano 34), Osimhen, Kvaratskhelia
Milan: Maignan; Calabria, Kjær, Tomori, Hernández; Tonali, Krunić; Brahim Díaz (Junior Messias 59), Bennacer, Rafael Leão (Saelemaekers 84); Giroud (Origi 68)
Milan face Inter in the semi-finals, playing the first leg at home on Wednesday 10 May. The second leg will take place on Tuesday 16 May.