Ricky Kaka was inspirational and Mario Balotelli also scored as Milan crushed Celtic 3-0, their first Glasgow win since 1969.
As Ajax beat Barcelona 2-1, Milan will qualify as long as they avoid defeat in the final head-to-head with the Dutch side at San Siro.
The Rossoneri needed at least a point here to remain in second place, as they had five points with Ajax on four and Celtic three. Philippe Mexes, Sulley Muntari, Marco Amelia, Cristian Zaccardo, Mattia De Sciglio, Giampaolo Pazzini and Stephan El Shaarawy were injured, so Daniele Bonera started just days after his first appearance of the season. Celtic missed Scott Brown, Nir Baton, Adam Matthews and Steven Mouyokolo.
Milan had managed just two draws from their last four visits to Glasgow and were without an away win in all competition this season.
Dirk Boerrigter had a great chance after two minutes when he got away from Valter Birsa on a corner, but completely mis-kicked at the back post. Mario Balotelli blasted across the face of goal moments later after turning Efe Ambrose, but Beram Kayal somehow scuffed wide when Charlie Mulgrew’s shot hit him in an onside position.
Milan took the lead when Kaka was allowed a totally free header from four yards on a Birsa corner, glancing it in towards the far post. It was his first Champions League goal for the Rossoneri in six years.
Cristian Zapata needed a desperate clearance and on the counter from that move Kaka set up Balotelli to blast over from a tight angle. Kaka also tried to set up Birsa, who was caught unawares and let the chance go begging, then the Brazilian went for it himself with a wonderful curler inches past the far post.
Celtic lost Kayal to injury after a coming together with Riccardo Montolivo and Christian Abbiati smothered a scuffed Mulgrew effort. Balotelli had the ball in the net before half-time, but the offside flag was up before he lobbed Fraser Forster, while Abbiati smothered a Giorgios Samaras header.
Straight after the restart a Celtic free kick was floated back in for the totally unmarked Van Dijk, who somehow fired directly at Abbiati from point-blank range.
Antonio Nocerino came off the bench and immediately curled in the corner for Milan’s second goal. There was more terrible defending from the Hoops, as the ball was knocked back across for Cristian Zapata to tap in at the back post.
Van Dijk did get the ball in the net with a towering header, but this time he was offside and it did not count.
Balotelli was more clinical and added a third to Milan’s tally, as he ran on to Montolivo’s long ball, held off defenders and placed a precise angled drive across Forster from six yards. It ended SuperMario’s six-game goal drought.
James Forrest was at full stretch for a finish that shaved a coat of paint off the far post, but Kaka was given a standing ovation when he left the pitch at Celtic Park.
Celtic 0-3 Milan
Scorers: Kaka 12 (M), Zapata 49 (M), Balotelli 60 (M)
Celtic: Forster, Lustig, Ambrose, Van Dijk, Izaguirre; Boerrigter, Kayal (Ledley 31), Mulgrew, Forrest (Rogic 80); Commons (Stokes 65); Samaras
Milan: Abbiati; Abate (Nocerino 48), Zapata, Bonera, Emanuelson; Montolivo, De Jong, Poli; Birsa (Constant 72), Kaka (Robinho 80); Balotelli
Ref: Cakir (TUR)
Think you know your Italian football? Share your knowledge, tips and comments to win cash prizes in OLBG's tipster competition  - £5,000 monthly.