Trailing early on to goals from Tom Rogic and Odsonne Edouard, the Rossoneri netted twice in as many minutes to wipe out Celtic’s advantage, with Samu Castillejo’s equaliser following a fine Hakan Calhanoglu freekick.
Milan completed their comeback within minutes of the start of the second half through a wonderful solo effort from Jens Petter Hauge, before the Norwegian teed up Brahim Diaz for the fourth late on as the Rossoneri secured a spot in the Round of 32 with a game to spare.
Despite Milan looking the brighter of the teams in the early exchanges, Celtic were gifted the opener through a Rade Krunic blunder. The Bosnian miscontrolled a simple pass from goalkeeper Gianluigi Donnarumma, allowing Rogic to steal the ball and fire into the bottom corner.
The goal saw the Scots burst into life and just moments after Donnarumma was forced into a fine save from a close range Callum McGregor effort, they had doubled their lead.
A magnificent defence-splitting Ryan Christie through ball caught Alessio Romagnoli out at the back and Edouard coolly lifted the ball over Donnarumma, as the Hoops were fully in control after 15 minutes.
Yet within a matter of minutes that lead had evaporated as Milan came roaring back. Firstly, Calhanoglu curled in a wonderful freekick after a clumsy Christie foul on the edge of the box.
Then just 90 seconds later the Rossoneri were back on level terms as Castillejo drilled in a loose ball from close range after Theo Hernandez’s cross fell kindly to him. The turnaround was almost completed in sensational fashion midway through the half as Calhanoglu saw a direct corner tipped away from under the crossbar.
Milan did indeed complete their comeback early in the second half as Hauge collected the ball out wide before weaving his way past four defenders and slotting into the far corner, and the Diavolo were in complete command.
Celtic weren’t without a threat of their own though, with the dangerous Jeremie Frimpong latching onto a pass and turning away from Theo, but he rifled inches wide. Meanwhile, Romagnoli was alert to intercept a fine Christie pass into the box as McGregor lined up a finish.
Meanwhile, a pinpoint Christie freekick looked destined for the top corner, only for an incredible Donnarumma save at full stretch to deny Celtic an equaliser.
However, with just 10 minutes remaining Diaz stepped off the bench to seal victory for Milan as he took advantage of Hauge’s fine dribbling into the box to lose his man and dink the ball over Vasilis Barkas.
Courtesy of Lille’s victory over Sparta Prague Milan are guaranteed qualification, whilst Celtic are consigned to last place after a sixth defeat in 10 in all competitions.