AC Milan saw Zenit St Petersburg recover from two goals down before completing a 3-2 away win over the Russian champions in their Champions League Group C match at the Petrovskiy Stadium.
Goals from Urby Emanuelson (13) and Stephan El Shaarawy (16) had handed the visiting side a surprise 2-0 lead after 16 minutes only for Zenit to recover to level at 2-2 with Hulk (45) and Roman Shirokov (49) finding the net.
Milan won it when Tomas Hubocan unfortunately saw the ball fly into his own net from Riccardo Montolivo's cross 15 minutes from time with home goalkeeper Vyacheslav Malafeev heading in the wrong direction.
Zenit tasted their first defeat at home in 17 matches in European competition, but were only denied at least a draw due to the heroics of Christian Abbiati in the Milan goal.
Abbiati was simply outstanding as his side moved top of Group C on four points after a home draw with Anderlecht in their opening match of the section.
Pointless Zenit remain bottom having tasted defeat to Malaga in their Group C opener and face an uphill battle to salvage third place in the group that will ensure them a spot in the Europa League beyond Christmas.
Milan were quickly out of the blocks as Emanuelson saw a deflected free-kick elude Malafeev before El Shaarawy dashed to the edge of the Zenit area to beat the Russia goalkeeper with purposeful run and shot.
Milan should have been awarded a penalty on 20 minutes when Bojan Krcic was clearly felled by Hubocan, but the referee somehow missed it.
Zenit recovered strongly, but could not a find a way beyond the inspired Abbiati, who made the first of a series of exceptional saves when he clawed out a header from Montolivo that was heading into his own net on 25 minutes.
Abbiati would make excellent stops from Hulk, Shirokov and Hubocan before somehow stopping then holding a blistering Hulk free-kick that will be remembered as one of the best saves in this season's Champions League. The pace on the shot from 20 yards had to be seen to be believed.
Zenit finally found their range when Hulk bounded onto a pass from Shirokov to beat Abbiati from inside the visiting area before Shirokov himself popped up unmarked to convert the equaliser from a Hulk corner.
Zenit should have been awarded a penalty when Ignazio Abate clearly pushed Hulk to the ground. It was a decision that would haunt the home side as substitute Giampaolo Pazzini saw Hubocan inadvertently net an own goal from his wicked ball across goal.
Abbiati had the final say when he threw himself across goal to make a fabulous stop from Alexander Anyukov's stinging volley after Hulk had picked him out with a corner.
It ensured Milan a first away from home in Europe since November 2010.
MAN OF THE MATCH
Christian Abbiati (Milan) - An inspired performance from the Milan goalkeeper, who ensured his side a vital three points.
Zenit: Malafeev 6, Anyukov 6, Criscito 6, Lombaerts 6, Hubočan 6, Shirokov 6, Fayzulin 5, Witsel 6, Bystrov 6, Kerzhakov 6, Hulk 6. Subs: Zyryanov 6, Bukharov 6, Kanunnikov 6
Milan: Abbiati 9, Zapata 6, Abate 6, Bonera 6, Antonini 6, Boateng 7, Montolivo 6, Emanuelson 6, De Jong 6, Krkić 6, El Shaarawy 7. Subs: Yepes 6, Nocerino 6, Pazzini 7