Former QPR captain Adel Taarabt went close to opening the scoring with just five minutes on the clock. The Moroccan collected possession from Alejandro Faurlín, before unleashing a curling effort which struck the outside of the post from 25 yards out.
In response, Villa produced the only shot on target during the opening 45 minutes through Barry Bannan. The Scottish midfielder's free-kick looked to be heading for the top corner, only for Paddy Kenny to dive to his left and palm the effort away.
Villa midfielder Fabian Delph spurned an opportunity to put his side in front shortly after the restart, but after 56 minutes they did edge themselves in front.
As Gabriel Agbonlahor moved to convert Stephen Warnock's cross, he was tugged back by QPR defender Armand Traore. A penalty was awarded and Bannan stepped up to beat Kenny, who had guessed the right way.
The hosts pushed for an equaliser and were close to drawing level in the 68th minute. Shaun Wright-Phillips latched onto a knock-down from substitute DJ Campbell, but his low effort was tipped wide by Villa goalkeeper Shay Given.
Neil Warnock's side continued to press for a goal, including having a number of efforts from close-range free-kicks, but the R's search looked to be in vein.
Their cause wasn't helped in stoppage time when Traore was handed his second yellow card for a foul on Villa substitute Marc Albrighton.
However, Heidar Helguson raided down the left wing in the third minute of time added on and his low cross deflected into the net off Villa centre-back Dunne.
Both sides are back in league action next weekend. Villa will play host to Wigan Athletic on Saturday afternoon, while QPR travel to Fulham a day later.