Zenit fikk en marerittstart på kampen, og Milan tok ledelsen 2-0 før det var spilt 17 minutter. Etter 14 minutter satte Urby Emanuelson inn 1-0 på et frispark som endret retning i muren og fintet ut målvakt Vjatsjeslav Malafejev i Zenit-målet.
To minutter senere gjorde Stephan El Shaaray alt riktig og økte Milans ledelse.
Hjemmelaget fikk blod på tann da Hulk reduserte til 1-2 på overtid tid i 1. omgang.
Etter hvilen kom da også utligningen da Roman Sjirokov headet ballen i mål.
Avgjørelsen falt da slovaken Tomás Hubocan var uheldig og satte ballen i eget mål.
Det russiske laget gikk på sitt andre tap i gruppen, mens Milan spilte uavgjort 0-0 i den første kampen hjemme mot Anderlecht. Den belgiske klubben tar imot spanske Malaga i den andre kampen i gruppen onsdag.