Kaspars Gorkss’ goal against his former club left QPR staring at the prospect of another defeat.
Gorkss, who also scored in Rangers’ recent League Cup loss against Reading, pounced after the home side failed to deal with Nick Shorey’s right-wing corner.
Sean Morrison headed against the bar and Gorkss’ left-footed follow-up found its way through the hands of keeper Julio Cesar and past Esteban Granero on the line.
Rangers, bottom of the table and without a league win this season, were on the back foot for much of the opening 45 minutes.
Djibril Cisse, restored to the R’s starting line-up, sent a long-range effort over the bar before Junior Hoilett saw an effort go wide.
But Reading remained a threat, especially at set-pieces, with Morrison dominant in the air.
And they stayed in front after a brilliant save by keeper Alex McCarthy, who tipped Granero’s free-kick onto the bar before Jose Bosingwa volleyed over from the rebound.
QPR (4-4-2): Cesar, Bosingwa, Ferdinand, Nelsen, Traore; Hoilett, Granero, Diakite, Taarabt; Hoilett, Mackie.
Subs: Green, Derry, Hill, Wright-Phillips, Onouha, Zamora, Faurlin.