Joe Hart produced a goalkeeping masterclass as Mario Balotelli's last-gasp penalty earned Manchester City a fortunate point against Borussia Dortmund.
The England international produced a host of breath-taking saves at the Etihad Stadium to keep his side in their Group D contest with the German champions.
Hart was only beaten in the 62nd minute when substitute Jack Rodwell's awful blind pass allowed Marco Reus to burst through and fire the Bundesliga side into the lead.
City had created plenty of openings in an end-to-end first period, but were second best after the interval and only numerous stops from their No.1 prevented the game being over long before the final whistle.
And with time running out, referee Pavel Kralovec handed them a lifeline when he penalised Neven Subotic when Sergio Aguero's shot struck his arm from point-blank range, with Balotelli keeping his cool to send the excellent Roman Weidenfeller the wrong way.
The score could easily have been 3-3 at half-time, but was not due to the brilliance of the keepers.
Weidenfeller, in front of magnificent away support, was the first in action, as early as the first minute, as City, keen to get their campaign started after losing at Real Madrid, burst forward.
Samir Nasri hit the target with a snap-shot from the edge of the area, but Weidenfeller parried.
Dortmund were equally as keen to attack and also went close early on when Robert Lewandowski headed over from a Lukasz Piszczek cross.
City had another great chance when David Silva found Aguero, but Weidenfeller rushed out to smother the Argentinian's shot.
Hart produced the first of a series of fine saves to tip a Mario Gotze shot from the edge of the area on to the post after a quick Dortmund counter-attack.
The breathless opening continued as Marcel Schmelzer and Jakub Blaszczykowski cut through City with some fine interplay, but the hosts managed to recover and clear their lines.
City captain Vincent Kompany was booked for halting another Dortmund counter with a sly tug on Reus' shoulder.
Kompany got his judgement right soon after, however, when he denied Blaszczykowski with a well-timed challenge.
City suffered a blow when Javi Garcia was forced off with a leg injury just after the half-hour and was replaced by Rodwell.
That did not interrupt City's attacking flow and Silva released Aguero moments later, but Weidenfeller did brilliantly to palm his long-range shot over.
Dortmund then enjoyed a good spell with Subotic firing narrowly wide and Zabaleta sliding in to block a Schmelzer shot.
Hart came to City's rescue twice in quick succession to deny Gotze, first blocking at close range and then tipping a thunderous drive on to the bar.
City went close again when Zabaleta floated in a dangerous cross, but after it dropped just over Edin Dzeko's head, Silva could only volley over.
Dortmund had the last chance of the first half when Ilkay Gundogan found space in the area, but Hart, yet again, was equal to the shot.
The second period began at a slower pace, but it was not long before the tempo picked up again.
Dzeko did well to control a Yaya Toure pass with his chest and turn and shoot, but his effort lacked the power to trouble Weidenfeller.
City's poor luck with injuries in the competition continued as, after losing two players in Madrid, Nasri was forced off and Aleksandar Kolarov took his place.
Hart was stretched again at the other end as he turned away a swerving shot from Gotze.
But the England No.1 could do little after Rodwell gifted the ball to Reus with a poor pass just after the hour and the Dortmund attacker burst forward to blast into the net.
Reus almost doubled the lead moments later after combining with Lewandowski, but could not beat Hart again as the keeper blocked with his feet.
The story then became even more about Hart as he again did brilliantly to touch a Gundogan curler over.
The hosts were again lucky to stay in the game as Lewandowski first shot over and then incredibly put wide moments later after being picked out with a superb pass from Gundogan.
Dortmund's bench reacted angrily when City chose to play on after Gundogan stayed down after a challenge from Zabaleta, but referee Pavel Kralovec saw nothing untoward.
City boss Roberto Mancini surprisingly opted not to turn to Carlos Tevez in his attempts to snatch a result in the closing stages, instead sending on the unpredictable Balotelli.
It still did not look like being City's night as they poured forward, with Toure apparently struggling with injury.
Weidenfeller again did brilliantly as he got a hand to a powerful header from Aguero.
City kept the pressure on and gained a very fortunate penalty decision when Aguero hooked the ball towards goal and it struck Subotic's arm at point-blank range.
Balotelli did not complain and he stepped up to despatch a cool spot-kick into the bottom corner.The drama was not over and, fittingly, Hart had the final word as he kept out a strong drive from Lewandowski.
|Manchester City||Team Statistics||Borussia Dortmund|
|0||1st Half Goals||0|
|7||Shots on Target||10|
|2||Shots off Target||8|
|64.4||1st Half Poss.||35.6|
|65.3||2nd Half Poss.||34.7|