Olivier Giroud s first-half strike proved the difference as Milan battled through to the 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.
That run. Just sensational.
— AC Milan (@acmilan)
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.
What does it mean? Milan frustrate Napoli once more
Runaway Serie A leaders Napoli have been by far and away the dominant force in Italy this season, yet Milan have had the edge over Luciano Spalletti s side.
The Rossoneri defeated Napoli twice in April, yet this draw will likely serve as the most punishing blow after Spalletti s men were sent crashing out of Europe in front of their vociferous home supporters.
A potential semi-final meeting with city rivals Inter awaits for Milan if the Nerazzurri can overcome Benfica in Wednesday s second leg. Simone Inzaghi s side lead the tie 2-0.
Giroud emulating fellow veteran Ibrahimovic
Giroud became the first Milan player to see a Champions League penalty saved since the 2005 final when Liverpool s Jerzy Dudek denied Andriy Shevchenko in the shootout, yet the France striker responded well.
The Milan striker s strike took him onto seven goal involvements in 10 European outings this term, only Zlatan Ibrahimovic has managed more for the Rossoneri in a single Champions League campaign (nine in 2011-12).
You can t keep a champion down for long
— AC Milan (@acmilan)
Not so super Mario
Rui had a game to forget after needlessly giving away the first-half penalty for an unnecessary and ill-timed lunge on Leao.
The left-back was fortunate to see his blushes spared by Meret but was forced off injured after just 34 minutes, having already lost possession a team-high nine times in a poor showing.
What s next?
Napoli return to Serie A action at Juventus on Sunday, when Milan host Lecce.