Stephen Ireland smashed home a stunning injury-time volley to break Reading hearts and maintain Manchester City's 100% league record at Eastlands.
Ireland celebrates his stunning last-gasp winner
City dominated the opening half and Martin Petrov fired them ahead after a goalmouth melee saw Elano hit the post.
But Reading equalised before the break with their first shot on target, James Harper curling in after a neat move.
Geovanni wasted a glorious late chance for the home side before Ireland's spectacular winner.
The result was harsh on Reading who gave a much-improved second-half display.
City looked like they would win at a canter after a bright and inventive start which saw them take the lead after 11 minutes.
Stephen Ireland is young, talented and has a long career in front of him
The home side cleverly worked space for Ireland on the right flank and after an almighty scramble which saw Elano hit the post, Petrov smashed the ball home from six yards.
That should have been the cue for Sven-Goran Eriksson's men to go on and wrap up the points before the break as they continued to dominate possession.
Reading seemed content to back off and Elano was given time and space to probe away at the Royals rearguard.
But for all their territorial advantage and patient football, City struggled to create chances and they began to lose their sense of urgency as the game wore on.
Reading had barely ventured into City's half during an almost anonymous opening 40 minutes with Bobby Convey's miscued volley from 20 yards their only shot at goal.
But with two minutes of the first period remaining Harper levelled with a precise finish, neatly guiding the ball home with his instep following Convey's pass.
The pace of the game increased after the break with Reading pressing much further up the pitch.
But still the chances failed to materialise.
The lively Stephen Hunt was lucky to stay on the pitch for a nasty, studs-up lunge on Manchester City substitute Gelson Fernandes.
City slowly began to get on top again and Geovanni blazed over from 25 yards and Georgios Samaras, a half-time replacement for the ineffective Emile Mpenza, had a great chance to secure the points but could not divert the ball past Marcus Hahnemann.
Geovanni then seemed to blow City's hopes of extending their fine home record when he shot over late on.
But deep into injury-time, Ireland raced into the box and showed wonderful technique to meet Geovanni's header on the run and crash a superb volley past Hahnemann.
Manchester City manager Sven-Goran Eriksson on matchwinner Stephen Ireland:
"It was a great goal from Stephen. He is playing better and better, which is fantastic. Samaras played his part as did Geovanni.
"I did not expect it, especially as Geovanni had missed a great chance just a minute earlier.
"He was like a second striker near the end. Maybe that is his best position. Stephen is young, talented and has a long career in front of him."
Reading boss Steve Coppell:
"We contributed fully to the game and it was hard to concede a goal so late on in the match.
"We went a goal down but knew that we would get a chance to get back into the match and when we equalised felt we'd get at least a point.
"The ironic thing was that all the delightful football they play they got the winner with a long ball."
Man City: Isaksson, Corluka (Jihai 43), Richards, Dunne, Garrido, Gelson, Hamann, Ireland, Petrov, Elano (Geovanni 58), Mpenza (Samaras 46).
Subs Not Used: Hart, Ball.
Goals: Petrov 11, Ireland 90.
Reading: Hahnemann, Murty, Sonko, Ingimarsson, Shorey, Hunt, Gunnarsson, Harper, Convey, Doyle (Long 85), Kitson.
Subs Not Used: Federici, Oster, Fae, Bikey.
Booked: Hunt, Long.
Goals: Harper 43.
Ref: Steve Tanner (Somerset).