Adel Taarabt's late winner kept alive QPR's faint play-off hopes while denting Bristol City's ambitions.
City keeper Adriano Basso twice saved from Samuel De Carmine while Ivan Sproule fired over for the visitors as the sides traded long-range efforts.
After the break it was more of the same until QPR midfielder Jordi Lopez bent a 25-yard free-kick into the top corner.
Michael McIndoe drilled in from 10 yards to bring City level but Taarabt slotted in from five yards to win it.
QPR boss Paulo Sousa: "There have been a lot of critics, but now we have had two good results.
"We have a good spirit and the players believe in me because I always say the same things - because I believe in what I'm saying.
"Every team has a moment where results are not good. The important thing is to show spirit and unity, which we did."
Bristol City boss Gary Johnson: "Of course I'm disappointed with the outcome. We didn't do ourselves justice.
"That wasn't our game we played out there. For some reason we kept lumping the ball forward.
"It was a poor game for us and I didn't recognise what we were doing. The pitch wasn't great and it wasn't easy to play good football on it."
Please turn on JavaScript. Media requires JavaScript to play.
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).
What are these?
Print Sponsor
Bookmark with:
What are these?