Christian Benteke eased Aston Villa's relegation fears and pushed bottom-placed QPR nearer to the drop as his late goal sealed a 3-2 win in a pulsating Barclays Premier League clash.
Rangers dominated the opening half at Villa Park and deservedly led through a goal from midfielder Jermaine Jenas, only for Gabriel Agbonlahor to level against the run of play.
Andreas Weimann put the home side ahead early in the second half and, after Andros Townsend made it 2-2, Villa's Austrian striker set up the winner for Benteke.
Villa goalkeeper Brad Guzan made two excellent saves in the space of 60 seconds to keep his side on level terms as QPR made a good start. The United States international backpedalled to turn a looping header from Christopher Samba over the bar after he had connected with a Jose Bosingwa free-kick.
Then Guzan made an even better save to turn aside another effort from Samba, this time from just inside the box.
Joe Bennett's misdirected pass led to Jenas giving QPR the lead after 23 minutes. Jenas released Zamora in space and his low drive was parried by Guzan but Jenas continued his run into the box and was first to the loose ball to make no mistake from close range.
The woodwork came to Villa's rescue when Bosingwa's powerful free-kick struck a post but in first-half injury-time Agbonlahor brought the home side level when he peeled off to the far post and headed home a right-wing cross from Matt Lowton.
Julio Cesar tipped over Weimann's header but after 59 minute,s Weimann cut inside from a Bennett pass before drilling a low left-footed shot past Cesar from 15 yards.
Then with 17 minutes left the impressive Townsend made it 2-2. Loic Remy and Ji-Sung Park combined to tee up Townsend and his shot took a slight deflection as it flew past Guzan.
Villa responded and after 81 minutes Weimann turned goal-maker with his low cross turned in by Benteke after good play by substitute Charles N'Zogbia. This time QPR had no response and they now stand seven points adrift of safety with eight games to play.