The Republic of Ireland striker scored twice after Villa’s lead - thanks to Darren Bent’s early penalty - was overturned by first-half goals from Michael Kightly and David Edwards for Wolves, who finished the match with 10 men after Karl Henry was sent off.
Keane’s brace on his full Villa debut sends his new team up one place in the table to 11th.
Villa almost gave manager Alex McLeish a present on his 53rd birthday in the very first minute when Ciaran Clark’s cross was met by the head of Gary Gardner, only for the 19-year-old to head wide of the target.
Wolves contributed to a lively opening to the game and top scorer Steven Fletcher could have grabbed his 10th goal of the season when he met Edwards’s low ball across the box with a first-time strike but aimed it right at the feet of Shay Given.
Villa were awarded a 10th-minute penalty when Wolves defender Christophe Berra’s heavy touch inside the area gave Bent the chance to steal the ball from him. Flustered by the Villa striker’s ambush, Berra desperately lunged for the ball and upended Bent.
The England striker calmly sent goalkeeper Wayne Hennessey the wrong way to register his eighth Premier League goal of the season and the 99th of his career. Bent has now converted 17 of his 20 penalties in the Premier League, including each of his last five.
That goal meant that Wolves have now gone 10 home games without a clean sheet, and they set about overturning the deficit with real purpose.
After Edwards was denied a penalty for Wolves following a clash with fellow Welshman James Collins, the home side pulled themselves level on 21 minutes. Kightly has been a peripheral figure since Wolves' promotion due of a series of injuries, but looked in fine fettle on his first league appearance since September - jinking into the Villa box from the right and selling Clark a dummy that gave him the space to hit a clinical low shot into the far corner.
That goal sparked Wolves into life as Kightly caused a flagging Villa all sorts of problems on the right. The winger delivered a series of corners, one of which led to Fletcher having a header saved - and Henry’s follow-up was headed off the line by Marc Albrighton.
Just past the half-hour mark the home side took the lead. Just minutes after Edwards had guided an effort right at Given after good work from Matt Jarvis, the midfielder was well-placed to glance Roger Johnson’s header from a corner past Given for his second goal of the season. It is the first time Edwards has registered more than one goal in a top flight campaign.
Jarvis almost rounded off a swift counter-attack to make it 3-1, but Villa went into the break just one goal behind.
McLeish brought on Stephen Warnock at half-time after Clark had clearly struggled to contain the exuberant winger, and the substitute was largely successful in his task.
Six minutes into the second half Keane struck to draw Villa level. Wolves were boxed in at a throw in their own half and could only clear to the edge of the box. Clark headed the ball down for Keane to swivel and fired a low half-volley past the outstretched hand of Hennessey. The goals meant that Keane became the seventh player to score for a record six different clubs in the Premier League.
Going into this match Wolves had recouped 10 points from losing positions this season, but their chances of adding to that total were hampered further when Emmanuel Frimpong had to be stretchered off. The on-loan Arsenal midfielder had impressed, but took a boot to the face from Stiliyan Petrov when diving for a header and was unable to play any further part.
After McCarthy replaced the energetic Frimpong with the languid Nenad Milijas he was forced into another midfield reshuffle after Henry was sent off 15 minutes from time. The former Wolves skipper got in a tangle with Albrighton, and reacted to the Villa midfielder grabbing hold of his legs by digging a heel into his chest. Referee Michael Oliver showed no hesitation in showing a red card.
Villa set about claiming a win, and it duly arrived with five minutes of normal time remaining when Keane met Johnson’s headed clearance with a ferocious strike from 20 yards that flew in off the underside of the bar.
As the last minute of the allotted 90 gave way to eight minutes of injury time, Keane almost got his hat-trick when another strike from range swerved wide of the near post - but he had already done enough damage to leave his former employers in a precarious position.