Rangers dominated the opening half at Villa Park and deservedly led through a goal from midfielder Jermaine Jenas, only for Gabriel Agbonlahor to level before the break with a close-range header.
Andreas Weimann put the hosts ahead early in the second half and, after Andros Townsend made it 2-2, Villa's Austrian striker set up the winner for Benteke.
It was Belgium international Benteke's seventh goal in the last eight league games and took his overall tally to 17 since his £8million summer move from Genk.
For much of the first half, QPR looked like a side brimming with confidence after their back-to-back wins against Southampton and Sunderland.
But they only had the goal from Jenas to show for it. The midfielder fed Bobby Zamora whose shot was parried by Brad Guzan. Jenas continued to run forward and was first to the loose ball to make no mistake.
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.
Joe Bennett, who had given away possession before QPR's opener, atoned for that error by setting up Weimann for his 11th goal of the season in the 59th minute. From his pass, Weimann cut inside before drilling a low left-footed shot past Cesar from 15 yards.
The impressive Townsend made it 2-2 with 17 minutes remaining, his shot taking a slight deflection as it beat Guzan.
But Weimann turned goal-maker after 81 minutes, with his low cross turned in by Benteke. QPR had no response and stand seven points adrift of safety with eight games to play.