Roberto Mancini's side kept their title hopes alive as an injury-time goal gave them all three points while the Royals will spend Christmas on the bottom of the tableManchester City kept pace with title rivals Manchester United as they claimed a last-gasp victory over Reading thanks to an injury-time header from Gareth Barry.
The Premier League champions were in command for the vast majority of the game but were only able to make their advantage tell when the England midfielder headed in David Silva's left-wing cross in added time.
City boss Roberto Mancini made two changes to the side that won at Newcastle last weekend, with 18-year-old defender Karim Rekik making his full debut in place of Gael Clichy, and Gareth Barry coming in for Samir Nasri. Reading meanwhile, made four changes from their heavy defeat against Arsenal, as Chris Gunter, Alex Pearce, Jem Karacan and Ian Harte were all named in the starting line-up.
The hosts made the brighter start to proceedings and after half-chances from Carlos Tevez and Matija Nastasic, Mancini's men should have taken the lead but were denied by Adam Federici, who produced a superb close range save from Tevez after the Argentinian had latched on to compatriot Sergio Aguero's fine flick-on.
Reading defended resolutely following that early opening, and frustrated City for much of the first half, however the champions were able to create some opportunities, most notably when Barry powered a header towards goal from a Tevez cross, only to see his effort comfortably held by Federici.
City continued to pile the pressure on the Reading goal, but the opener continued to elude them, Yaya Toure had a claim for a penalty turned down after Tevez and David Silva combined beautifully on the right, and Pablo Zabaleta was also unlucky not to have netted when his deflected shot looped just over Federici's bar.
The Royals had been on the back-foot for the entirety of the opening period, but they almost grabbed the advantage early in the second as Pearce headed just over from a Harte corner.
Still it was the home side who carried the much greater threat, and will have wondered just how they had not taken the lead when Zabaleta's ball evaded both Tevez and substitute Edin Dzeko with the goal gaping. The introduction of Dzeko appeared to galvanise City and he was at the hub of another attack minutes later, heading inches above the bar from a Tevez corner.
The visiting defence remained stern in spite of City's dominance however and although Mancini's men dictated the play, Reading could perhaps have taken all three points had they been more clinical on the counter. Indeed, Brian McDermott's side again went close as Pearce directed another header just wide from a fine set-piece delivery from Harte.
Aguero, the hero of City's title winning campaign last season, almost gave the home fans another late showing as he broke free before firing into the side netting. However it was Barry who delivered the finale when he powered a header into the net with just minutes to play to maintain the Citizens' title tilt.