Balotelli penalty earns City point
Balotelli converted a 90th-minute spot kick to earn City a lifeline in the competition against an impressive Dortmund side who dominated for large periods and were only prevented from winning the match comfortably by the brilliance of Hart.
The England keeper was beaten in the second-half by Marco Reus but produced a string of top-draw saves that kept Dortmund from scoring a few goals that would have rendered Balotelli's late penalty little more than a consolation.
As it was, the Italian placed the ball on the spot following a handball from defender Neven Subotic and, despite the best efforts of Dortmund keeper Roman Weidenfeller to put him off, stuttered in his run up and stroked the ball low into the net.
Had City lost they would have been pointless from the opening two games and facing a mountain to climb to qualify for the knock-out round.
"We didn't play well. We didn't deserve to take this point but in the end it could be important," City manager Roberto Mancini told Sky Sports.
"Borussia Dortmund played better than us and at this moment they are a better side. We need to run and fight for every ball.
"It's not enough to have just a good quality. I knew before the game it was going to be difficult as Dortmund have more experience in the Champions League than us.
"I think that Joe Hart saved us because he did very, very well. I know the problem and I will solve it very quickly. If we don't improve it will be difficult (to qualify) but this point could be important."
A pulsating first half stayed goalless thanks to a string of brilliant saves at both ends.
Dortmund's Weidenfeller was called into action after just 30 seconds to palm away a shot from Samir Nasri and superbly blocked twice from Sergio Aguero when the Argentine was through on goal.
It was Hart, however, who was the busier of the two.
He twice pushed Mario Goetze shots against the woodwork and stood up tall to snuff out the German playmaker when he found himself through on goal after neat interplay around the box.
David Silva somehow volleyed over from two metres at the end of the first half, but after the break it was all Dortmund, who set about City with stylish verve.
The visitors duly broke the deadlock when Reus pounced on a poor cross-field pass from City substitute Jack Rodwell to race clear and finish past Hart on 61 minutes.
It was then down to the England number one to keep his team in the match as he single-handedly kept out everything Dortmund threw at him.
The visitors' cause was not helped when striker Robert Lewandowski shot wide from close range and having passed up several opportunities to put the game out of sight, there was an inevitability about City's leveller when it arrived.
Sergio Aguero struck the ball against the arm of Subotic, referee Pavel Kralovec pointed to the spot and Balotelli, a late substitute, calmly stroked the ball low into the net.
"We've got to b