Lucas Paquetá made his debut, but Milan needed two sensational volleys from extra time substitute Patrick Cutrone to knock Sampdoria out of the Coppa Italia.
The Rossoneri go on to face Napoli or Sassuolo in the quarter-final.
Paquetá was given his debut from the start just days after arriving from Flamengo in a €35m deal, but Suso, Lucas Biglia, Jack Bonaventura, Andrea Bertolacci and Mattia Caldara missed out, along with suspended Davide Calabria. Gonzalo Higuain also started despite the on-going Chelsea rumours. Samp couldn’t count on new buy Manolo Gabbiadini yet, with Bartosz Bereszynski injured.
Milan dominated possession early doors, but made little impact with Samu Castillejo attempts from distance. The hosts lost Karol Linetty to an ankle injury, bringing on Jakub Jankto just 21 minutes in.
Pepe Reina had to parry a Fabio Quagliarella snapshot and Gianluca Caprari fell as he tried to get on the rebound, but penalty appeals were waved away, as Cristian Zapata’s contact seemed minimal.
Samp took control as the half wore on, as Reina rushed off his line and was almost caught out by a Gaston Ramirez lob.
Higuain was entirely anonymous until just before half-time, when he ran on to a smart Franck Kessie through ball and his angled drive shaved a coat of paint off the far post.
Moments later, Ignazio Abate’s cross found Castillejo for a free header over the bar. Caprari whipped a dangerous ball across the face of goal, but Ramirez volleyed off target.
Tiemoue Bakayoko fired straight at Rafael and Paquetá seemed to be in a more advanced role in the second half, dropping Hakan Calhanoglu deeper.
Ramirez had a couple of chances, testing Reina at the near post and nodding a corner over, but Calhanoglu came sliding in to meet a Castillejo cross at the back post and under pressure couldn’t steer it on target from a couple of yards.
Paquetá made his first real contribution on 73 minutes, smashing just wide from outside the box as the Samp defence kept backing off.
Higuain did have the ball in the net with a well-taken control and half-volley from a tight angle into the far bottom corner, but was flagged offside.
Quagliarella sprung the offside trap to hit the side-netting after good work from Caprari and substitute Riccardo Saponara, but moments later Saponara thought he’d scored with a snooker shot that scraped the far post of an open goal.
Reina flew to palm an Albin Ekdal screamer out from under the crossbar and Kessie wasn’t too far off target from a huge distance.
However, unable to find a breakthrough, the tie went to extra time. It was not what Milan wanted, as they will face Juventus in the Italian Super Cup on Wednesday in Jeddah.
Patrick Cutrone was introduced, but in the Coppa Italia this season, teams were allowed a fourth substitution in extra time.
A corner was not cleared properly and Ekdal fired over from 12 yards, but Reina had to come to the rescue three times in 30 seconds. First he used his legs to deflect when Saponara sprung the offside trap, then on the resulting corner he got his glove to a header, scrambling to smother the Dawid Kownacki tap-in on the line.
Instead, Milan broke the deadlock as both their substitutes combined for a magical goal. Andrea Conti whipped in a cross from the right and Cutrone peeled off his marker to meet it with a delicate volley off the inside of the boot.
Reina was still Man of the Match with a crucial reaction save from point-blank range to tip Kownacki’s effort over and within 30 seconds, Cutrone had struck again to double Milan’s lead.
It was an even better goal than the first, an inspired lob on the volley that floated over stranded Rafael into an empty net on the cross-field pass from Calhanoglu.
Sampdoria 0-2 Milan (aet)
Cutrone 102, 108 (M)
Sampdoria: Rafael; Sala, Colley, Tonelli, Murru; Praet, Ekdal, Linetty (Jankto 21); Ramirez (Saponara 77); Quagliarella (Kownacki 94), Caprari (Defrel 93)
Milan: Reina; Abate (Conti 99), Zapata, Romagnoli, Rodriguez; Kessie, Bakayoko, Paquetá (Borini 84); Castillejo (Cutrone 90), Higuain (Laxalt 112), Calhanoglu