Mario Balotelli's last-gasp penalty salvaged a vital point for Manchester City at the end of an enthralling Champions League clash with Borussia Dortmund.
City's 17-game unbeaten run at home in Europe looked to be over with the German side leading through a Marco Reus strike and only being denied more goals by a virtuoso performance from an inspired Joe Hart.
But with Roberto Mancini's men on the ropes in what the City manager had described as a must-win encounter in Group D, they were gifted a last-minute chance to save themselves when Neven Subotic handled inside the area, and substitute Balotelli coolly rolled home the resulting spot-kick.
It is a point that keeps City's hopes of reaching the knockout stages alive but it was more than they deserved from a game in which their defence was often ripped to shreds.
The tone for a frantic first half was set in the first few seconds when Edin Dzeko's flick allowed space for Samir Nasri's shot, which was pushed away by Roman Weidenfeller.
Weidenfeller was a busy man in the first half, dashing from his line on two occasions to thwart Sergio Aguero after David Silva sent him running clear, and also tipping over a fizzing shot from the Argentine striker.
But the real heroics were taking place at the other end, where Hart made his first fantastic save of the night after 12 minutes when he dived at full length to claw Mario Gotze's shot on to the post.
Much had been made of the threat posed to City by Polish striker Robert Lewandowski in the build-up to the game, but it was Germany international Gotze who looked most likely to break the deadlock.
Hart had to spread himself to keep out the Dortmund playmaker's dinked shot after a neat Dortmund move before somehow turning a fierce angled effort from the same player on to his crossbar.
The chances kept coming and, after the impressive Silva somehow failed to turn in Pablo Zabaleta's cross from point-blank range, it was down to Hart to keep the game scoreless at the break, this time denying Ilkay Gundogan with another instinctive stop.
Gotze and Hart kept up their personal battle at the start of the second half, with Hart throwing himself to his right to keep out a curling effort from the edge of the area.
But Dortmund continued to look dangerous and and got their reward just after the hour mark, following a disastrous mistake by Jack Rodwell, on for the injured Javi Garcia.
Rodwell's pass across defence was meant for Matija Nastasic but only succeeded in releasing Reus to run into the area and fire in a shot that Hart got a hand to but could not keep out.
City's attempt to respond only left them looking even more vulnerable at the back, with Hart blocking another Reus effort and tipping over Gundogan's shot, while Lewandowski failed to turn in a cross from close range.
By now Mancini's men were hanging on rather than pushing for an equaliser, but that changed after Balotelli came off the bench with 10 minutes to go.
When the ball was played into the Dortmund box, Aguero lifted it over Subotic, bringing a handball from the Dortmund defender.
Responsibility for the spot-kick fell to Balotelli, who went for precision rather than power as he sent Weidenfeller the wrong way to dig his side out of what would have been a huge hole.
Real Madrid thrashed Ajax in Amsterdam to lead the group while Dortmund occupy second spot, three points clear of City.
Even a draw means City still have it all to do to reach the knockout stages for the first time but they at least head for back-to-back ties against Ajax knowing that Madrid and Dortmund are not out of sight.