Manchester City needed Gareth Barry's stoppage-time winner to earn a 1-0 win at home to bottom club Reading on Saturday and exert some pressure on Premier League leaders Manchester United.
It looked like being a day of frustration for the champions against a side thrashed by Arsenal on Monday, but Barry's header broke Reading's resistance and moved City to 39 points, three behind United, who play at Swansea City on Sunday.
A second-half penalty by Mikel Arteta earned Arsenal a 1-0 victory at Wigan Athletic as the Gunners moved up to third place in the Premier League. North London rivals Tottenham Hotspur fell out of the top four after a 0-0 home draw with Stoke City.
Everton moved into fourth, making light of Marouane Fellaini's absence through suspension to win 2-1 at West Ham United, who had Carlton Cole sent off.
Norwich City's long unbeaten league run came to an end at West Bromwich Albion, where they took the lead but slipped to a 2-1 defeat.
Arsenal, Everton, Tottenham and West Brom all have 30 points, with Chelsea, who face Aston Villa on Sunday, on 29.
Queens Park Rangers' revival under new manager Harry Redknapp was halted by a 1-0 loss at Newcastle United, for whom Shola Ameobi scored late on. Sunderland eased away from the bottom three with a 1-0 victory at Southampton.