The Royals dominated proceedings in the first half and went in front when Dave Kitson neatly squared for the onrushing James Harper to slot past Simon Royce.
They were pegged back when Gareth Ainsworth found Lee Cook and the midfielder lashed home from 20 yards.
But Reading bagged the winner when Ivar Ingimarsson thumped home a header from substitute John Oster's corner.
Reading manager Steve Coppell
"It was hard work but the characteristic of a good team is one that does not play well and still wins.
"I said at half-time not to wait for something bad to happen and it was almost a prophecy as they then scored.
"But although we weren't as fluid as usual I still thought we had another
goal in us and so it proved."
QPR: Royce, Bignot, Shittu, Evatt, Dyer, Langley, Doherty, Santos, Cook, Sturridge (Ainsworth 44), Gallen.
Subs Not Used: Cole, Milanese, Moore, Shimmin.
Booked: Gallen.
Goals: Cook 47.
Reading: Hahnemann, Murty, Sonko, Ingimarsson, Shorey, Little (Oster 63), Harper, Sidwell, Convey (Hunt 71), Kitson, Doyle.
Subs Not Used: Stack, Makin, Obinna.
Booked: Little, Kitson.
Goals: Harper 10, Ingimarsson 66.
Att: 15,347.
Ref: A Leake (Lancashire).