Reading earned a fifth win in seven league games as they dealt a setback to QPR's automatic promotion chances.
Daniel Williams nodded the visitors ahead only for ex-Royals striker Kevin Doyle to level from close range.
But an Alex Pearce header and fierce Garath McCleary strike within three minutes of each other gave play-off hopefuls Reading a two-goal cushion.
Rare Reading win at Loftus Road
- Reading had won only one of their last eight league meetings at Loftus Road before this win.
The visitors had Kaspars Gorkss dismissed for a lunge on Junior Hoilett but held on to win.
QPR have now taken just one point from their least three Championship games and are four points off second-placed Burnley, who they have a game in hand on, and 11 adrift of leaders Leicester.
Reading, in sixth, are four points ahead of seventh-placed Brighton, who have played a game less than them.
The visitors took the lead after 10 minutes when Williams found Adam Le Fondre out on the left and then drifted into the box unmarked to head home the striker's cross.
But QPR equalised when Reading failed to clear their lines and Doyle pounced after Will Keane's effort had been parried by keeper Alex McCarthy.
Pearce, playing because his red card against Sheffield Wednesday was rescinded after an appeal, restored his side's lead when he headed in Jobi McAnuff's corner.
McCleary then collected the ball in his own half before galloping towards the penalty area and unleashing a brilliant 25-yard shot that flew into the top corner as he put Reading 3-1 up.
Reading continued to press and wanted a penalty for a handball against Clint Hill before then having to withstand a spell of pressure.
A red card for Gorkss did not help the Royals cause but they kept QPR at arm's length to secure the three points.
QPR manager Harry Redknapp:
"I thought the best team won. Reading were bright, they had more energy than we did and I've got no complaints.
"It's a difficult day but we've got to pick ourselves up again. We've got to work hard on the training pitch and get back to how we were playing a few weeks ago.
"There's testing times in every season. I've had one in every season I've been in management and this is just another one."
Queens Park Rangers
- 01 Green
- 18 Hughes
- 39 Assou-Ekotto (Benayoun - 78' )
- 17 Barton Booked
- 05 Dunne
- 06 Hill Booked
- 23 Hoilett Booked
- 19 Kranjcar Booked
- 14 Doyle
- 12 Keane (Zamora - 57' )
- 03 Traore
- 15 Onuoha
- 16 Jenas
- 20 Henry
- 25 Zamora
- 26 Murphy
- 35 Benayoun
- 40 Maiga
- 21 McCarthy
- 02 Gunter
- 37 Obita Booked
- 23 Williams Booked
- 05 Pearce
- 17 Gorkss Dismissed
- 12 McCleary Booked (Kelly - 93' )
- 16 Akpan
- 07 Pogrebnyak (Robson-Kanu - 85' )
- 09 Le Fondre (Hector - 73' )
- 11 McAnuff
- 01 Federici
- 03 Kelly
- 10 Drenthe
- 19 Robson-Kanu
- 20 Guthrie
- 22 Blackman
- 35 Hector
Ref: David Coote