A booming header from Ivar Ingimarsson steered Reading to their 20th game without defeat as QPR's play-off hopes suffered another setback.
This was a cracking game which neither side really deserved to lose, but Reading were just the better team in the end.
Reading have not lost since the opening day of the season and stay second in the Championship table having been in danger of letting an early lead slip.
James Harper had fired Reading ahead against the run of play in the tenth minute only for Lee Cook to equalise for a determined QPR two minutes after the break. Ingimarsson then came up trumps in the 66th minute as both sides searched for a winner.
The match started very much in Reading's favour as Kevin Doyle should have shot them ahead with just a few seconds gone. The Reading striker was denied, though, as Simon Royce made an excellent save with his feet.
That stop prompted a spell of QPR pressure, including near misses by Richard Langley and Georges Santos, which was only broken when Reading counter-attacked to take the lead in the tenth minute.
The move started with former Arsenal midfielder Steven Sidwell picking out Dave Kitson. He flicked the ball on neatly to James Harper, who took the ball in his stride and beat Royce with a low, slick shot from around the penalty spot.
QPR were outplayed on the pitch and outsung off it for long spells after Harper's strike until Dean Sturridge gave them a glimmer of hope when he headed narrowly wide from a Marcus Bignot cross.
But Reading denied Rangers much space in front of goal and the home side's frustration was betrayed by captain Kevin Gallen, who was booked for a late challenge on Sidwell before half-time.
Reading received a major wake-up call at the start of the second half, as QPR came out flying and equalised through Cook two minutes after the restart. The midfielder latched on to a knock-down from Santos to score only his second goal of the season with a cracking shot from the edge of the area.
The Reading fans, who had proudly sung 'you're not fit to wear the hoops,' were now silenced as Rangers found their voice all around the ground. And the game reverted to the crazy pace it had started at as Reading tried to regain the lead and Rangers also sought a winner.
This frantic match now had an atmosphere to match and Reading wide midfielder Glen Little was replaced by sub John Oster before he could be sent off having already been booked and appearing to lose his cool.
And it was Oster who turned the game on its head again when he delivered the 66th minute corner for Ingimarsson to powerfully head in Reading's winner at the near post. Rangers tried to rally, but now all the singing was coming from the away end.