Lyndon Dykes’ late penalty gave QPR victory and moved them up to third in the Championship table.
Reading, who started the night in third place and would have gone top had they won, went ahead at Loftus Road through Andy Carroll’s penalty.
But Dykes, on his 27th birthday, equalised with his first goal in 11 matches and then, with six minutes remaining, he netted from the spot to give the R’s a third consecutive win and take them level on points with leaders Sheffield United, who play on Saturday.
Carroll opened the scoring on the half-hour mark after Lucas Joao had been clipped by Tim Iroegbunam near the edge of the area – the veteran striker’s first goal for Reading since rejoining the club last month.
It came after Rangers had been denied what looked like an obvious penalty of their own.
Ilias Chair’s cross was headed back towards goal by Iroegbunam and defender Sam Hutchinson clearly used his arm to divert the ball out for a corner.
QPR, without injured talisman Chris Willock, caused Reading problems early on, with Tyler Roberts’ strike bringing a save from Joe Lumley as the visitors struggled to get out of their own half.
Rangers’ night took a turn for the worse when right-back Ethan Laird, outstanding since arriving on loan from Manchester United, went off with a hamstring injury shortly before Reading went ahead against the run of play.
But Mick Beale’s side hit back slightly less than three minutes after falling behind.
Laird’s replacement, Osman Kakay, did superbly on the right and his cross was met at the near post by Dykes, who sent a diving header beyond former QPR keeper Lumley and into the far corner of the net.
Reading had much more of the ball in the second half but Lumley twice prevented them from falling behind.
Roberts missed a great chance when his header from Chair’s cross was saved at point-blank range by Lumley, who also did well to keep out a strike from Chair as Rangers pushed for a second goal.
And that goal arrived when Dykes slotted home after Rangers were, finally, awarded a penalty – their first of the season – following Mamadou Loum’s needless foul on Iroegbunam.
QPR: Dieng; Laird (Kakay 26), Dunne, Clarke-Salter, Paal; Field (Dickie 70), Johansen (Dozzell 74), Iroegbunam; Chair, Roberts (Amos 74); Dykes.
Subs not used: Archer, Adomah, Shodipo.