Leroy Lita ensured Steve Coppell made a happy return to Manchester City, the club he once managed for 33 days.
Reading's in-form striker scored two late goals to earn his side their fourth away Premiership win of the season.
Lita broke the deadlock with 11 minutes remaining and sealed victory in the 89th minute as he made it eight goals in his last eight games and 13 for the season.
While Reading had plenty to celebrate, it was an altogether a different story for City, who slipped to their fourth home league defeat of the season.
City created plenty of goal-scoring chances but, once again, they had no cutting edge and, remarkably, this was the 13th time this season in league and cup that they have failed to find the net, which has been their Achilles Heel.
And it was easy to see from the opening minutes why City have one of the worst goal-scoring records in their league.
Defender Sylvain Distin glanced a header wide early on from Joey Barton's corner while Micah Richards, standing behind him, was better placed to hit the target.
DaMarcus Beasley then had an angled shot deflected wide while Darius Vassell's 30-yard drive dipped narrowly over the crossbar.
Reading keeper Marcus Hahnemann's first save came midway through the half, an easy catch to keep out Barton's long-range effort.
City were forced to make a change of keeper late in the half when Nick Weaver was replaced by Andreas Isaksson.
Weaver was injured following an unfortunate collision with team-mate Richard Dunne as they both tried to cut out Stephen Hunt's long throughball.
After a lengthy stoppage, Weaver carried on but, minutes later, went down again and had to go off.
Reading had the ball in the net but Lita's close-range effort was ruled out by referee Howard Webb after he adjudged the ball had gone out of play before Hunt headed it back across the face of goal.
City ought to have taken the lead in the 43rd minute when Hahnemann made a fine double save to deny Georgios Samaras and then keep out Barton's follow-up shot, when it looked as though he could not miss.
The second half followed a similar pattern to the first with City remaining in control but unable to make a breakthrough as Vassell lifted a near-post shot over the crossbar from six yards and then Dunne had two decent attempts at goal, but he was unable to find a way past Hahnemann.
Against the run of play, Reading almost snatched the lead on the hour when Steven Sidwell's shot took a wicked deflection off substitute Dietmar Hamann and looped over Isaksson only to strike the crossbar.
Vassell ought to have put City ahead in 72nd minute when he burst through on goal, only for Hahnemann to save the day as he spread himself superbly to block his effort.
City manager Stuart Pearce was so frustrated that he hauled off £6million striker Samaras with 15 minutes left and handed a first-team debut to 18-year-old Academy striker Daniel Sturridge.
City squandered another clear cut chance when Beasley's cross was only headed out as far as Barton who thundered a drive narrowly wide.
And how City was made to pay for those missed opportunities when Reading snatched a 79th minute lead.
Sidwell's slide-rule diagonal pass split open the City defence for Lita to burst through on the left and smash an unstoppable shot into the top corner of the net.
Lita made certain of victory in the 89th minute with another clinical piece of finishing after being released by James Harper and outpacing Dunne to score with a low shot.