Gareth Barry scored deep into injury time as Manchester City finally managed to break down a resolute Reading defence to win their Premier League match 1-0 at the Etihad Stadium.
Just when it looked as though Manchester United would have the chance to open up an eight-point lead at Christmas in Sunday's game against Swansea, Barry got his head to a David Silva cross to put City within three points of their local rivals, though he climbed all over Nicky Shorey to do so.
It was an unconvincing victory for City against the Premier League's bottom side, but Roberto Mancini's team are fond of doing things the hard way and last-minute drama figured prominently in their title win last season. Barry's dramatic intervention makes their chances of retaining the trophy that bit better.
Injuries to Gael Clichy and Aleksandar Kolarov convinced Mancini to hand a full debut to 18-year-old Karim Rekik at left-back, despite having Joleon Lescott on the bench, and the youngster had a tricky introduction to the Premier League with Jimmy Kebe testing him early on.
Having seen Adrian Mariappa booked inside two minutes for a silly tackle on Carlos Tevez, Reading were then almost gifted the opener on six minutes when Joe Hart made an error, only for Kebe to fail to punish the reigning champions. However, that merely introduced a sustained spell of pressure for the home side.
Some of City's approach play was fantastic, with Silva and Sergio Aguero linking up with Tevez to good effect, but they were unable to regularly test Adam Federici despite some intricate passing.
Aguero embarked on one brilliant run, only to fail to pick out a team-mate from the byline as Alex Pearce slid in to challenge him. Silva then exchanged passes with Tevez, collecting the return with a clever touch through his own legs, only to find the side netting.
City should have taken the lead after 16 minutes when Aguero set Tevez free with a gorgeous cushioned pass into his path. The striker saw his first effort saved by Federici and then his follow-up was deflected over the bar. Within minutes, Tevez was played in again by a lovely pass from Silva and crossed for Barry, who thumped his header at Federici.
Reading's midfield was being bypassed with alarming regularity but their defence stood firm to repel attack after attack from City, even if they were a touch fortunate when Yaya Toure was unable to convert following another expert one-two from Silva and Tevez. Still, the away side held on to invite scattered jeers from the home support as the half-time whistle blew.
City's frustration might have deepened alarmingly had Pavel Pogrebnyak not managed to head over despite being well placed to meet an Ian Harte corner just after the restart, and the second half was just 14 minutes old when Edin Dzeko was summoned from the bench to reprise his role as super sub, with underemployed defensive midfielder Javi Garcia making way.
Dzeko quickly settled in and after 62 minutes was only inches away from connecting with a fine cross from Pablo Zabaleta after Silva and Tevez combined to prise open the Reading defence. Just four minutes later he met a corner towards the near post and directed a header narrowly over the bar.
Still City were unable to find a way through the massed yellow away shirts that packed the Reading box and after taking off Tevez for Scott Sinclair they could even have found themselves a goal down when Rekik risked giving a penalty away as he knocked Tabb to ground as a cross came in.
Reading threatened again when Pearce headed wide from a corner but, just as they famously did against QPR on the final day of last season, City stole the win in injury time.
Silva's cross from the left was excellent and Barry clambered over substitute Shorey, by fair means or foul, to get his header away and plant the ball out of the reach of Federici.
MAN OF THE MATCH
David Silva (Manchester City): The Spaniard produced some sumptuous touches and was full of invention. He supplied the crucial cross for Barry to head home.
MANCHESTER CITY: Hart 6, Zabaleta 7, K Toure 6, Nastasic 7, Rekik 6, Garcia 5, Barry 7, Silva 8, Y Toure 6, Aguero 7, Tevez 7. Subs: Sinclair 6, Dzeko 6, Milner N/A.
READING: Federici 7, Gunter 7, Pearce 7, Mariappa 7, Harte 7, Kebe 7, Leigertwood 6, McAnuff 5, Karacan 5, Tabb 6, Pogrebnyak 6. Subs: Guthrie 6, Shorey N/A.