The on-loan Los Angeles Galaxy striker's double helped Villa to come from behind against his old club after Darren Bent's early penalty had been cancelled out by goals from Michael Kightly and Dave Edwards.
Wolves had been reduced to 10 men with 15 minutes remaining after midfielder Karl Henry kicked out at winger Marc Albrighton and received a red card.
Victory enabled Villa manager Alex McLeish to celebrate his 53rd birthday in style and his side have now taken 11 points from their last five away matches.
But Wolves remain embroiled in a relegation battle and are in the bottom three after their sequence without a league win was extended to eight games.
Villa started promisingly and should have gone ahead in the first minute.
Ciaran Clark delivered a telling cross from the left of the Wolves box and Gary Gardner found himself unmarked at the far post but headed wide.
Villa keeper Shay Given had to be alert to cling on to a low drive from Steve Fletcher after Wolves' nine-goal top scorer had seized on a low cross from Edwards.
But after 10 minutes Bent scored his 99th Premier League goal from the penalty spot to put Villa ahead.
Wolves could have no complaints as the England striker was chopped down inside the box by Christophe Berra.
Up stepped Bent to send Hennessey the wrong way from the spot.
Villa were looking the more threatening and Roger Johnson blocked a fierce drive from Gardner at the expense of a corner.
But after 21 minutes the lively Kightly brought Wolves level.
Emmanuel Frimpong showed some neat skill before finding Kightly on the right and he cut inside before beating Given with a low drive into the far corner.
Wolves were now in the ascendancy and Albrighton was forced to head a shot from Henry off the line.
Matt Jarvis then teed up Edwards in plenty of space near the Villa penalty spot but he powered his low drive straight at Given.
It came as no surprise when Wolves went ahead after 31 minutes through Edwards with Villa again vulnerable at a set-piece.
Kightly's corner was met by Johnson's powerful header and Edwards got in front of Given to head the ball into the roof of the net.
McLeish made a half-time substitution with Gabriel Agbonlahor making way for Stephen Warnock who slotted in at left-back which allowed Clark to move into midfield.
After 52 minutes Keane brought Villa level.
Jarvis' clearance fell straight to Clark who headed the ball down for Keane who swivelled and drilled a low shot past Hennessey into the corner of the net.
Wolves were forced into a change when Frimpong was accidentally caught in the face by Petrov when attacking a Kightly corner.
There was a lengthy delay before the on-loan Arsenal midfielder was stretchered off with his neck in a brace and replaced by Nenad Milijas.
Villa were galvanised by their equaliser and Hennessey had to save from his own defender when Stephen Ward connected with a Bent cross.
Albrighton made a 50-yard run and was only just too high with a 20 yard effort, while at the other end a Jarvis cross was just too high for Kightly who could not control his header.
Wolves were reduced to 10 men after 75 minutes when Henry kicked out at Albrighton when on the ground and was given a straight red card.
The former captain will miss the games with QPR, Liverpool and West Brom while serving a three-game ban.
Villa made their numerical advantage count when Keane scored a superb winner in the 84th minute.
Alan Hutton's cross was only half cleared to Keane, whose fierce 20-yard drive flew past Hennessey into the top corner of the net.