With a slew of injuries to deal with, Max Allegri's Milan side lined up with a patchwork feel to it with four changes from its weekend draw against Torino: Kevin Constant for Urby Emanuelson, Antonio Nocerino for Riccardo Montolivo, Valter Birsa for Kaka and Alessandro Matri for Robinho. Neil Lennon made just two changes from the side that won away at Hearts on Saturday, Charlie Mulgrew replacing Joe Ledley and Georgios Samaras in for Derk Boerrigter.
After Celtic won an early free kick that came to nothing, Milan settled into what they hoped would be the template for the rest of the match, easily pushing Celtic back into their own half and really dictating play from midfield. This gave way to the first real chance of the game as Birsa, on debut, crossed for Mario Balotelli to hit a scintillating drive that Fraser Forster had to parry away.
The chances kept coming for Milan in the early minutes as Forster again had to be on hand, first to deny a Cristian Zaccardo effort from 18 yards before smartly coming out to smother the ball after Birsa had been set free inside the area.
On 18 minutes, Celtic were given a free kick from 12 yards after Christian Abbiati picked up a backpass from Cristian Zapata, but Mulgrew's effort was deflected over by a brave member of the Milan side.
As the half wore on, Celtic were able to garner more and more possession but this meant that Milan were now a danger on the break as Nocerino hit a wicked dipping volley from 25 yards that flew just inches over the bar.
Aside from the free-kick, Celtic's best opportunity of the half came about from a Milan mistake as an ambitious Nocerino backpass was pounced on by Anthony Stokes. The Irishman turned Zapata inside out in the box but Philippe Mexes made it back in the nick of time to get a crucial touch and send it around the post.
At the start of the second period, Celtic were afforded their best opportunity so far as Samaras, quiet up until this point, went on a jinking solo run, his shot grazing the outside of the post.
Conversely, Milan also had their best opportunity soon afterwards as Sulley Muntari was found unmarked at the back post by Zapata, but the Ghana international somehow headed over when it looked easier to score.
Milan were now having serious problems keeping the ball in midfield and were giving the ball away regularly, almost inviting Celtic to attack them. Samaras fired a difficult ball wide after Adam Matthews took possession in midfield and fed Mikael Lustig, who crossed for the Greek.
After a Balotelli free kick hit the wall, Kris Commons went on a counter and fed in Scott Brown, Nigel De Jong just making it back to take the sting out of the Celtic captain's effort, and Abbiati was able to gather easily.
With 15 minutes to go, Lennon sensed an opportunity and threw on Teemu Pukki and Boerrigter, the Finn winning a free kick, which Stokes crashed off the crossbar.
A minute after Stokes had hit the woodwork, Celtic found all their good work undone and were a goal down. Zapata bounded forward from centre-back and hit a tame effort from 25 yards on his left foot, which agonisingly took a large deflection off Emilio Izaguirre leaving Forster with no chance.
Five minutes later and Milan put a seal on the victory. Scott Brown was shown a yellow card for an off-the-ball incident with Balotelli, the Italian recovered to take the free kick, which Forster could only parry into the path of Muntari, and the midfielder stabbed home to give Milan a victory they scarcely deserved.
Milan: Abbiati; Zaccardo, Zapata, Mexes, Constant (Robinho 76); De Jong, Nocerino, Muntari; Birsa (Emanuelson 63); Balotelli, Matri (Poli 87)
Goals: Zapata (81'); Muntari (86')
Celtic: Forster; Lustig, van Dijk, Ambrose, Izaguirre; Matthews (Boerrigter 75), Brown, Mulgrew (Biton 89); Commons (Pukki 77); Stokes, Samaras