Adel Taarabt's goal nine minutes from time earned QPR their second win of the week to seriously dent Bristol City's play-off push.
The on-loan Tottenham midfielder slotted home from five yards to secure all three points for Paulo Sousa's men in a Coca-Cola Championship game that only came to life in the last 30 minutes.
Both sides had spent the opening hour exchanging harmless long-range efforts until former Real Madrid midfielder Jordi Lopez opened the scoring for the home side with a fine free-kick that was cancelled out by Michael McIndoe.
But with a draw on the cards, Taarabt converted Damien Delaney's cross to ensure his side backed up Tuesday's 1-0 win over Swansea and leave City five points adrift of the top six.
The eventual scoreline did not look likely after a tepid first half that saw the two sides trade long-range efforts without ever really looking like breaking the deadlock.
The visitors flew out of the blocks with Nicky Maynard sending a snapshot wide of the post but Rangers soon grew into the contest with Taarabt drilling in two efforts and Matteo Alberti testing Adriano Basso with a long-range sighter.
Genuine chances were hard to come by, though, with Samuel De Carmine's effort from the edge of the area that Basso did well to claw round the post the closest either side had come.
Basso remained busy, having to fend away another attempt from Di Carmine, while at the other end Ivan Sproule should have done better when rifling a loose ball over the bar from close range.
Alberti chanced his arm once more with Basso again equal to the shot, with Maynard volleying wide when well set inside the area for City.
Gary Johnson's Bristol side should have gone ahead three minutes after the restart, but Dele Adebola could only power his header wide of the post when well-placed inside the area, while Rangers only remained a threat from outside the area with Lopez and Taarabt again the next to send efforts wide of the upright.
The 27-year-old Spaniard was finally able to make one of his efforts count, though, when the opening goal came.
Jamie McCombe was penalised for a foul on Di Carmine and Lopez stepped up to bend a 25-yard effort into the top right corner, finally breaking Basso's resolve.
The goal signalled the start of a flurry of chances, with Rangers substitute Heidar Helguson twice going close with a couple of drilled efforts, while Lee Johnson should have done better for the visitors when he could only direct McIndoe's cross into the hands of Radek Cerny.
McIndoe was able to redress the balance himself shortly after, though, when he crept in at the back post to drill home from 10 yards after Sproule's cross went across the box.
But the parity only lasted for four minutes as Taarabt slotted home his first goal in English football before Wayne Routledge went close to adding a third with a fine late volley.
Teams
QPR Cerny, Delaney, Connolly (Helguson 61), Ramage, Gorkss,Leigertwood, Lopez, Alberti (Routledge 46), Ephraim, Taarabt,Di Carmine (Cook 73).
Subs Not Used: Mahon, Vine.
Booked: Taarabt.
Goals: Lopez 65, Taarabt 81.
Bristol City Basso, Orr, McAllister, Fontaine, McCombe,McIndoe, Skuse, Sproule (Styvar 86), Johnson (Elliott 86),Adebola, Maynard.
Subs Not Used: Henderson, James Wilson, John.
Booked: Adebola, Basso.
Goals: McIndoe 77.
Att: 14,059
Ref: Grant Hegley (Hertfordshire).