Milan overcame a nightmare start to book their place in the Europa League round of 32 with a 4-2 victory against Celtic.
Celtic went ahead after just seven minutes when Tom Rogic made good on a mistake from Rade Krunic, before doubling their lead five minutes later through Odsonne Edouard, as Milan endured a terrible opening 20 minutes.
The Scottish side could've had more than two, but failed to make good on the chances and panicked as Stefano Pioli's side regained a grip of the game. A free kick from Hakan Calhanoglu put Milan back into proceedings after 24 minutes, before Samuel Castillejo levelled things up to send the two sides into half time at 2-2.
Milan looked determined not to slip up again after the break and came flying out of the blocks, quickly pulling ahead thanks to an impressive strike from Jens Petter Hauge, who grew in confidence as the game progressed.
Celtic struggled to pull together any momentum after falling behind and after a well placed Ryan Christie free-kick was saved by Gianluigi Donnarumma on 73 minutes, the writing was on the wall for Neil Lennon's side.
The points were secured when Hauge effortlessly got past uninspired Celtic defenders and found substitute Brahim Diaz, who dinked it over Vasilias Barkas.
With Sparta Prague losing against Lille, Milan are officially out of the woods. Here's the players got on.
1. Goalkeeper & Defenders
Gianluigi Donnarumma (GK) - 7/10 - Could do nothing about either of Celtic's two goals and kept Milan in the game several times throughout. Confident on the ball and stopped an inch-perfect Ryan Christie free kick.
Diogo Dalot (RB) - 5/10 - Caught out of position at times, but grew into the game and racked up a healthy 88% pass success while picking out some nice switches of play.
Simon Kjaer (CB) - 5/10 - Could to nothing to salvage Krunic's mistake which led to Celtic's opener and was subbed off injured after 11 minutes.
Matteo Gabbia (CB) - 5/10 - Positionally lacking at times, but wasn't helped by Milan's two full backs often being nowhere to be seen in the first half. Much improved next to Alessio Romagnoli.
Theo Hernandez (LB) - 6/10 - Far too casual in the first half and let Jeremie Frimpong in at every opportunity, but reigned it in throughout the game and found the balance. Bagged an assist for Milan's third.
Rade Krunic (CM) - 4/10 - The man at fault for Celtic's opener with some seriously sloppy play. A passenger throughout the first half and well off the level of his midfield teammates. Hooked at half time and understandably so.
Franck Kessie (CM) - 8/10 - Having to compensate for Theo Hernandez positionally caused Milan problems in the first 20 minutes, but the Ivorian did what was asked of him and was key as they grew into the game. Crucial in maintaining the tempo and completely bossed the midfield.
Hakan Calhanoglu (CM) - 7/10 - Capitalised on a poor challenge from Ryan Christie by bagging a free-kick in true Calhanoglu fashion. Not his strongest game but offered a decent attacking threat.
Samuel Castillejo (RW) - 8/10 - Bagged the all-important, quick-fire equaliser to put Celtic under and bring Milan back into the game and did so in composed fashion, although he could've had more than just one with more urgency.
Ante Rebic (ST) - 6/10 - Good running and worked hard to pull holes in the Celtic back line, doing the dirty work to feed teammates. Selfless performance.
Jens Petter Hauge (LW) - 9/10 - Good off the ball movement in the first half was let down by Hauge's predictability at times, but he came to life in the second to weave past three players and slot home beautifully, giving Milan the lead. Assisted Brahim Diaz to secure the points.
Alessio Romagnoli - 7/10 - Sorted out proceedings at the back, especially considering he was rushed onto the field. Swept up danger with confidence and kept his side ahead in tougher chunks of play.
Sandro Tonali - 6/10
Brahim Diaz - 7/10 - A clever, dinked finish was important in securing the points for his side.
Ismael Bennacer - 6/10
Lorenzo Colombo - N/A
5. Goalkeeper & Defenders
Vasilios Barkas (GK) - 4/10 - Little to do, but failed to impress whenever he was called into action. Should've done better with Calhanoglu's free kick.
Hatim Abd Elhamed (RB) - 3/10 - Afforded Jens Petter Hauge too much time to shift onto his right foot throughout the first half, and was inevitably punished for it after the break. Weak defending throughout the game allowed Milan in from the left every time.
Nir Bitton (CB) - 4/10 - Didn't set the world alight as Milan pulled back a two goal deficit. Was much better going forward when Celtic had possession, but far too weak in defending his area.
Kristoffer Ajer (CB) - 4/10 - Bullied by Ante Rebic in the air and pulled out of position when Milan grew into the game. Looks a shadow of the player who was linked with a move to the Rossoneri in summer.
Diego Laxalt (LB) - 5/10 - Indifferent performance against his former employers for Laxalt, with the best of Celtic's attacks coming from the opposite wing.
Callum McGregor (DM) - 5/10 - Overwhelmed at times as Milan plucked the Bhoys out of position. Acceptable first half, but looked lost in the second.
Scott Brown (DM) - 7/10 - Lead the charge in transition for his side in the first half. True captain's performance and found Frimpong with some tidy forward passes, and made a decent account for himself despite Milan's dominance in later stages.
Jeremie Frimpong (RW) - 7/10 - Lively from the first whistle and made a mockery of a sleeping Milan defence, Theo Hernandez in particular. Celtic's bright spark and created some decent chances down the right flank.
Tom Rogic (AM) - 7/10 - Razor sharp from the off and reacted well to score the opener following an error from Krunic. Fatigue hit him after the break, however, with his side chasing the play all too often.
Ryan Christie (LW) - 5/10 - Quiet game all round for Christie who failed to truly assert himself onto the Rossoneri. His best chance came from a free kick that was heading top bins if it wasn't for Donnarumma.
Odsonne Edouard (ST) - 7/10 - Intelligent first half from Eduouard who showed his class, despite his side's inconsistency. Smartly blocked Krunic following his error and scored an incredible dink over Donnarumma to make it 2-0.
Olivier Ntcham - 5/10
Ismaila Soro - N/A