Roberto Mancini hailed an "incredible" performance from Joe Hart after the England goalkeeper produced a string of exceptional saves to keep Manchester City's Champions League hopes alive on a night when the Italian conceded his side were fortunate to pick up a point against an excellent Borussia Dortmund team.

Mario Balotelli's late penalty, awarded harshly after Neven Subotic was penalised for handling Sergio Agüero's close-range shot, earned City a 1-1 draw that Mancini believes could be vital come the end of the group.

Yet it was Hart, rather than the Italy striker, who was hailed as City's saviour, after the 25-year-old made eight superb saves in a pulsating game that had chances from the first minute to the last. Hart denied Mario Götze on three occasions in the first half alone and, at times, it felt as though he was single-handedly keeping Dortmund at bay. He was so impressive that there was even acclaim from Old Trafford. "Have to say Joe Hart has been incredible. For me best keeper in the world," tweeted Wayne Rooney.

Mancini had expressed his frustration with Hart less than a fortnight ago, after the goalkeeper criticised his team-mates for allowing a 2-1 lead to slip over Real Madrid. On this occasion, however, there was only praise from Mancini, who recognised that he was indebted to Hart for preventing Dortmund from being out of sight by the time Balotelli scored in the 90th minute to cancel out Marco Reus's opener. "Joe Hart is incredible because he saved everything and we should say thank you to him," Mancini said. "He did a fantastic performance. I don't know if it's the best performance in football history but he did very well."

Hart admitted that he could not recall being so busy in goal before. "It could have been 10-all tonight. I thought their keeper was fantastic," he said, acknowledging the contribution that Roman Weidenfeller made in the first half, when the Dortmund keeper made a hat-trick of saves to thwart Agüero. "Off the top of my head, I can't remember making as many saves before. I thought Dortmund were different class tonight. It took a good defensive effort by us to keep it to just one. I hope this result is important and that it is not a waste of effort."

It remains to be seen whether that will be the case, although City will clearly have to play much better if they are to have a chance of reaching the knockout phase and avoid a repeat of last year's elimination at the group stage. Third in Group D with one point from two games, they have not kept a clean sheet since the penultimate game of last season and there was little doubt that Dortmund were going to extend that record on an evening when City never got the balance right between attack and defence.

"The Champions League is totally different from every championship," Mancini said. "When you play, you play against the best players, so when you have a chance you have to score. If you don't score, and after you concede, like we conceded this evening, it's difficult that we can win.

"First half we had three or four incredible chances and I don't know why we didn't score but this can happen. The problem was our performance. This is the problem. In the Champions League we can't play with all players that attack. We need to defend with all players. If you don't defend, if you don't run like Borussia Dortmund did this evening, it's difficult."

City lost Javi García to a thigh strain in the first half and it seems certain that the midfielder will miss Saturday's league game at home to Sunderland. Yaya Touré also appeared to be struggling and was well off the pace in the second half in particular, although Mancini claimed there was nothing wrong with the Ivorian's fitness. "Yaya didn't play well. He is not injured. But it was not only Yaya; all the team played a poor game. We didn't play well. We didn't deserve to take this point, but in the end it could be important. Borussia Dortmund played better than us and at this moment they are a better side."