Gareth Barry scored a 92nd-minute winner as Manchester City stunned Reading to close the gap on leaders Manchester United to three points.
Premier League champions City looked set to be held by the bottom-placed club before Barry rose above Nicky Shorey to head in David Silva's cross.
Barry and Carlos Tevez went close in a one-sided first half, while substitute Edin Dzeko had chances in the second.
Reading felt they deserved a penalty for a challenge on Jay Tabb at 0-0.
Tabb went down after contact from City's 18-year-old left-back Karim Rekik on his debut.
The visitors also argued that Barry should have been penalised for climbing on substitute Shorey for the goal.
But referee Mike Dean was unmoved on both occasions and City's win halved United's advantage at the top ahead of their trip to Swansea on Sunday,
Reading, by contrast, sit at the foot of the table with seven straight defeats, their worst run since an eight-match losing streak between December 2007 and February 2008. They were relegated that season.
This was City's first match at Etihad Stadium since defeat by United and they did not look entirely convincing.
Joe Hart was almost embarrassed early on after Jimmy Kebe intercepted his pass, while Jobi McAnuff headed over the bar.
But the expected pattern of play emerged as Sergio Aguero fed Carlos Tevez with a fine touch, only for Adam Federici to save.
City had won all of the 13 previous league matches Aguero and Tevez started together, and the pair again looked sharp, Tevez crossing for Barry to head powerfully at Federici.
Yaya Toure wanted a penalty for an Alex Pearce challenge following slick work by Tevez and Silva, while a Tevez shot was deflected just over and nobody was on hand meet an Aguero cross.
While City continued to press after the break, Reading created the clearest chance when an unmarked Pearce headed off target from Ian Harte's corner.
Manager Roberto Mancini opted to bring Dzeko on for Javi Garcia - replacing a midfielder with a striker - and it almost paid immediate dividends.
Dzeko came within inches of heading home Pablo Zabaleta's cross and then nodded a Tevez corner narrowly over the bar.
At the other end, Dean ignored Reading protests following Rekik's collision with Tabb, Pavel Pogrebnyak almost picked out Kebe and Pearce headed wide for a second time.
But no side had scored more goals in the final 30 minutes of Premier League games this season than City - a tally that is at 21 - and the late rally arrived as Silva nodded over and Aguero hit the side-netting.
It was left to Barry to secure the points with his controversial winner.