Celtic recorded their first away win of the Champions League era in the competition proper tonight after a rollercoaster match in Moscow.
Gary Hooper gave Celtic the lead on 12 minutes before two goals from Emmanuel Emenike either side of half-time put Spartak Moscow ahead.
After Spartak were reduced to 10 men for the final half hour, Celtic took control; after equalising through an own goal, the men from Scotland snatched a last-minute winner through Georgios Samaras.
It was a tentative start from Celtic on the artificial pitch in the Luzhniki Stadium, and Spartak enjoyed an early dominance, with the impressive Kim Kallstrom pulling the strings in midfield.
The game was quite suddenly turned on its head when Victor Wanyama powered forward from his deep-lying position in the Celtic midfield and bulldozed his way past Kallstrom, before sending Mikael Lustig clear on the right.
Lustig's low cross was perfectly placed for Hooper to score his 60th goal in 99 starts for Celtic.
While Spartak still enjoyed the majority of the possession after Hooper's opener, they struggled to create any clear-cut chances, and only Celtic's hesitant defending offered them any hope at that stage.
Hooper looked to have added a second for Celtic midway through the half, nodding home a Samaras cross, but he had strayed just offside and the strike was ruled out.
Spartak found an equaliser on 42 minutes after the Celtic defence was caught napping by a long ball over the top from Kallstrom.
Brazilian striker Ari latched on to it at the back post, and played a smart ball across for Emenike to tap home from close range.
The second half started disastrously for Celtic as Fraser Forster dived to stop a deflected shot from the edge of the box, but could only divert it into the path of Demy de Zeeuw, who looked suspiciously offside at the initial shot.
The Hungarian played the ball across for Emenike to slot home, with Lustig and Efe Ambrose too slow to the loose ball.
It looked to be an uphill struggle for Celtic from that point, with Spartak confidently knocking passes around, but the game dramatically turned again when Hooper's run clear on goal was halted unfairly by Argentine defender Juan Manuel Insaurralde.
French referee Tony Chapron, who made some strange decisions throughout, initially allowed play to continue as Spartak cleared the ball, before stopping play and issuing the red card.
Several minutes elapsed before Insaurralde left the field, and Charlie Mulgrew fired the freekick straight at goalkeeper Sergei Pesyakov.
Celtic equalised following a cross from the left from Mulgrew, which was cleverly dummied by Samaras.
Hooper collected the ball with his back to goal before laying it off into the path of substitute James Forrest (on for Wanyama), whose shot was blocked by the goalkeeper's leg before rebounding off defender Dmitri Kombarov and into the empty net on 71 minutes.
Celtic dominated the remaining 20 minutes, taking full advantage of the extra player, but as the 90 minute mark passed, it looked as though they would have to settle for one point.
Then Emilio Izaguirre whipped a cross into the box from the left wing, and Samaras rose in the middle of the penalty box to place a powerful header just inside the far post to give Celtic a deserved win and send their travelling fans into raptures.
Player of the match: Gary Hooper. The English forward led the line magnificently for Celtic, scoring the opener and setting up Celtic's second.
Spartak Moscow: (4-3-3) Pesyakov; Makeev, Insaurralde, Pareja, D. Kombarov; Carioca, Kallstrom, De Zeeuw (Bryzgalov 65); Ari (Kozlov 87) Emenike, McGeady ( Dzyuba 76)
Celtic: (4-4-2) Forster; Lustig, Wilson, Ambrose, Izaguirre; Commons, Brown, Wanyama (Forrest 70) Mulgrew (Ledley 78) Samaras, Hooper
Follow Daniel O'Connell on twitter @DanielOConnel18