The Scottish champions were still smarting from their 2-0 loss in Saturday's Old Firm derby at Celtic Park when they had to contend with the Italian giants.
The Serie A side dampened an enthusiastic start by the hosts in the 14th minute when midfielder Rade Krunic headed in a cross from Samuel Castillejo before Brahim Diaz added a second with a drive just before the break.
Celtic's response was admirable and Mohamed Elyounoussi reduced the deficit with a header from fellow second-half substitute Ryan Christie's 76th-minute corner but Milan substitute Jens Petter Hauge clinched the win with a counter-attack goal in added time.
It was the first time Celtic have lost back-to-back games since December 2018, when they went down to RB Salzburg and then Hibernian but boss Neil Lennon will have been encouraged by their second-half display when they refused to give up.
The 2-0 defeat by their Old Firm rivals Rangers had no doubt stunned Celtic.
Lennon made two changes with strikers Leigh Griffiths and Albian Ajeti in as a partnership for the first time, replacing Patryk Klimala and Elyounoussi.
AC Milan boss Stefano Pioli made five changes to the side which beat rivals Inter 2-1 at the weekend to remain unbeaten this season and top of Serie A.
However, evergreen Zlatan Ibrahimovic, who scored twice against Inter, was again leading the line at the age of 39 and making his first appearance at Parkhead since coming on as a substitute for Ajax in a Champions League qualifier in 2001.
Once again there were no fans allowed inside the stadium but Celtic started as if they were being cheered on by a packed house.
However, they were hit by an Italian sucker punch.
Castillejo drifted in from the right and flighted a cross in for Krunic to get in between defenders Stephen Welsh and Shane Duffy to direct his header past keeper Vasilis Barkas.
Celtic kept up a good tempo as they fought back but then the Serie A side began to occasionally flex their muscles and by the interval they had doubled their lead.
In the 42nd minute Ibrahimovic sent defender Theo Hernandez racing down the left and when he passed inside to Diaz, the attacker neatly side-stepped Duffy and Callum McGregor and slotted a shot low past Barkas.
Lennon replaced Welsh and Griffiths with Elyounoussi and Christie for the start of the second half and went to a back four in a reshaped formation with some early joy.
In the 51st minute, Celtic wing-back Diego Laxalt, on loan from the visitors, ended a promising move by driving just over the bar from the edge of the box.
Tom Rogic replaced skipper Scott Brown in the 64th minute but it was another replacement, Elyounoussi, who gave Celtic a lifeline when he headed in from Christie's delivery.
The home side gave it their all in search of a leveller but in the second minute of three added, Milan broke and Alexis Saelemaekers played in Hauge and his fellow substitute slipped the ball past Barkas.