Manchester City left it late to salvage their first point of their Champions League campaign with a 1-1 draw against Borussia Dortmund at the Etihad Stadium.
Marco Reus capitalised on a mistake by Jack Rodwell just after the hour mark to put the champions of Germany ahead, but Mario Balotelli equalised in the 90th minute from the penalty spot to ensure the Premier League winners got off the mark in Group D.
The first half had been very much a tale of the two keepers as Joe Hart and Roman Weidenfeller both did exceptionally well to keep the score goalless at half-time.
However, after City manager Roberto Mancini decided to switch to a back three in the second half, Dortmund took control of the match and would have surely won comfortably were it not for Hart's heroics in the City goal.
The draw means City are third in their group above pointless Ajax and below Dortmund on four points and Real Madrid on six.
Mancini preferred Edin Dzeko to partner Sergio Aguero in the City attack, while Matija Nastasic was again selected in defence ahead of Joleon Lescott for a European game. Dortmund boss Juergen Klopp brought a team brimming with attacking talent but which packed the midfield and made it difficult for Yaya Toure to exert his usual influence.
This match was always anticipated to be an open one, and the tone was set in the very first minute when Weidenfeller had to block Samir Nasri's shot from range. Pablo Zabaleta sliced a left-footed effort over the bar after David Silva picked him out inside the box.
City were forcing chances with their superior possession, but Dortmund always looked eager and able to put together swift, decisive counter-attacks and they soon began to work Hart at the other end.
Mario Goetze's duel with the England keeper began with a strike that forced a good two-handed save, before the Germany playmaker was denied twice in the space of a minute. One moment Hart had to be quick off his line to block Goetze's effort from the left of the box, the next he had to tip his effort from the right onto the crossbar.
At the other end, Weidenfeller twice races out of his six-yard area to block efforts from Sergio Aguero, as well as tipping a well-struck shot from the Argentina striker over the bar.
Both sides even had chances to go ahead right at the end of the first half. Aguero's weaving run ended in him being tackled, but Zabaleta picked up the loose ball and chipped a cross into the box. The ball went just over Dzeko's head and Silva somehow guided his volley over from close range.
Then, in the single minute of injury time, Ilkay Gundogan was unmarked as a cross landed right at his feet inside the box, but the midfielder's effort was too close to hart who was able to get both hands to the ball.
After the break it was Dortmund who began to take control, and once Hart denied Goetze with a save at full stretch after excellent build-up play from Jakub Blaszczykowski and Lukasz Piszczek down the right.
City's second substitution – Rodwell had replaced the injured Javi Garcia in the first half – saw Aleksandar Kolarov come on for Nasri, prompting the reshuffle to a three-man defence.
Dortmund could barely believe their luck as their brand of slick one-touch passing and movement was too much for the reduced City back line.
In spite of that, it was an individual error which led to the goal as Rodwell misplaced a pass and gave the ball to Reus. The Germany forward surged through into the box and finished past Hart – who got a hand to the shot – for his fourth goal in his last three games.
City were being carved open at will by this point, and Hart was again the only man stopping his team conceding a hatful with excellent saves from Reus and Ilkay Gundogan.
With a quarter of an hour remaining Robert Lewandowski was guilty of a terrible miss when he put Gundogan's wonderful cross wide, and it ultimately proved to be costly.
Balotelli came on with nine minutes remaining, and when Sergio Aguero hit the ball against Neven Subotic's arm the referee pointed to the spot and the substitute grabbed the ball. Typically, the Italy striker coolly sent Weidenfeller the wrong way and rolled the ball into the other corner. He is yet to miss any of his eight penalties taken for City.
City are now in exactly the same situation as last season, when they also one point after two matches in the toughest group of the competition. On that occasion, they finished third despite eventually amassing 10 points. Anything less than a win in their next match – a trip to Ajax – would all but end their hopes of reaching the knockout stage.
MAN OF THE MATCH – Joe Hart (Manchester City): The England goalkeeper made almost a dozen saves and earned City a point almost on his own.
MANCHESTER CITY: Hart 9, Zabaleta 7, Nastasic 5, Kompany 6, Clichy 6, Garcia 5, Y Toure 6, Silva 7, Nasri 6, Aguero 7, Dzeko 6. Subs: Kolarov 6, Rodwell 5, Balotelli N/A.
BORUSSIA DORTMUND: Weidenfeller 8, Subotic 6, Hummels 6, Piszczek 7, Schmelzer 7, Bender 6, Gundogan 7, Goetze 8, Reus 8, Blaszczykowski 8, Lewandowski 6. Subs: Felipe Santana 6, Kehl N/A, Grosskreutz N/A.