An own goal by Coventry goalkeeper Keiren Westwood as he tried to keep out Kyle Walker's cross and a flicked header from Tommy Smith after a delightful pass from Adel Taarabt secured all three points for the Loftus Road outfit.
Cardiff City were humbled 4-1 away at Watford.
Peter Whittingham's strike was not enough as two Danny Graham goals and one each from Marvin Sordell and John Eustace kept the Hornets in the top eight.
Graham even had the luxury of missing a first-half penalty.
Swansea City recovered from their 4-0 mauling at the hands of QPR on Boxing Day to win 1-0 at home to Barnsley with Jermaine Easter scoring for the first time in 25 games.
Leeds United slipped seven points behind leaders QPR after drawing 3-3 with Portsmouth.
The Elland Road side roared into a 3-1 lead thanks to strikes from Max Gradel, Jonny Howson and Bradley Johnson.
Pompey clawed back goals through David Nugent and two Andy O'Brien own goals to snatch an unlikely point.
Norwich City twice came from behind to beat Sheffield United 4-2 at Carrow Road thanks to Wes Hoolahan's hat-trick and another from Michael Nelson.
Andy Reid and Richard Cresswell had put the Blades ahead in the first half.
Former Reading star James Harper returned to haunt his old side as he crashed in Hull City's goal at the KC Stadium as they drew 1-1. Simon Church equalised six minutes from time.
Millwall's Steve Morison continued his fine form with a goal in the 2-0 home win against Leicester City. Jason Puncheon nabbed the other goal as the home side moved into the top 10.
won the battle at the bottom against Preston North End with a clinical 3-1 win.
A brace from Leroy Lita led the way and a third from David Wheater lifted Boro out of the bottom three after Preston had led through Billy Jones.
Scunthorpe strengthened their survival chances with a 2-0 win over Burnley at Turf Moor - Martyn Woolford and Chris Dagnall with the goals.
Neil Dann's free-kick was not enough for Crystal Palace to edge past Bristol City at Ashton Gate after Brett Pitman rescued a point with a last-minute penalty.