Drogba produced a stunning shot from distance with just seven minutes on the clock which was cancelled out by Clarence Seedorf before half-time.
Russian Zhirkov then restored Chelsea’s lead midway through the second half and this time there was no way back for their Italian opponents.
Juliano Belletti gave Milan a scare with just three minutes on the clock, unleashing a shot from outside of the box which forced a save from Zeljko Kalac.
There was little the Milan goalkeeper could do to stop Drogba’s opener four minutes later, however.
The Ivory Coast striker took everyone by surprise with a sublime strike from around 35 yards out which blazed into the top left corner.
It took a while for Milan to recover from the blow, but they slowly worked their way into the contest and Petr Cech made his first save after 19 minutes, using his feet to turn away Ronaldinho’s effort.
The alarm bells really started to ring for Chelsea 10 minutes later when a lovely passing move set up Seedorf for a chipped shot which came back off the crossbar.
And the Serie A side were back on level terms after 37 minutes thanks to Seedorf, who hit a first-time strike from Ronaldinho’s lay-off which sailed into the net from 18 yards.
Milan hit the woodwork for the second time after 57 minutes with Ronaldinho unlucky not to add his name to the scoresheet.
But Chelsea kept their heads, and their patience was rewarded 11 minutes later when
Zhirkov capped his first appearance with a goal.
The Russian capitalised on a game of pinball in the Milan area which began when Andriy Shevchenko’s shot was parried by Kalac to Frank Lampard.
His effort was also cleared by the Milan defence but only as far as Zhirkov who finished the job from the edge of the area.
Milan could have snatched a draw in stoppage time but Cech tipped Filippo Inzaghi’s effort over the bar.