Benteke's goal proved decisive to leave Paul Lambert's side one place above the dropzone, although 18th-placed Wigan do have two games in hand.
QPR were the better side in the first half and went close early on through Christopher Samba, who's powerful header was superbly saved by Brad Guzan. The American keeper was called into action moments later, this time to save a curling drive from the same player.
The visitors' domination bore fruit on 23 minutes when Jermaine Jenas slid in to shoot home after Bobby Zamora's strike was saved.
Zamora went close himself with a free kick as QPR looked for a second but then on the stroke of half time Villa equalised when Gabriel Agbonlahor headed home from Matthew Lowton's cross.
Villa looked a different side after the break as Benteke volleyed over and Andreas Weimann saw his header parried by Julio Cesar.
And the home side took the lead on 58 minutes through Weimann, his turn and low shot beating the Hoops keeper.
It looked as though Villa's good work was going to come to nothing when Andros Townsend found the back of the net after being teed up by Park Ji-Sung.
However, Villa refused to let the points slip and Benteke scored what proved to be the winner when he popped the ball home after the impressive Weimann put the it into his path.
The defeat was possibly harsh on Rangers, who stay bottom, level on points with Reading and one behind Wigan, as the relegation scrap intensifies.