Neil Warnock’s side paid the price for failing to convert dominance into goals, although they found Villa keeper Brad Guzan in inspiring form throughout an entertaining battle at Selhurst Park.
Benteke’s first goal in nine months on his return from suspension handed Palace their fifth defeat in eight games, but the home side will be left to reflect on their lack of composure in the final third after dominating the majority of the match.
Wilfried Zaha and Yannick Bolasie were constant threats to the Villa defence from the first whistle, but time and again the final ball was poorly-executed to the immense frustration of the vibrant home faithful.
Zaha, in particular, gave Aly Cissokho a rough ride in the early stages and forced a series of corners, while Palace had the ball in the net in the sixth minute only to be denied by the offside flag.
Guzan spilled a poor cross from Bolasie, but Dwight Gayle had strayed offside ahead of attempting to stab home the loose ball before Scott Dann rifled into the roof of the net.
The Villa goalkeeper was alert to keep out a deflection from Cissokho after Gayle had failed to connect with Joel Ward’s long ball, while Mile Jedinak’s ambitious back-flick was also dealt with by Guzan.
Benteke then left Dann trailing with a sublime turn on the edge of the Palace box, but his curling effort was palmed away by Julian Speroni and Guzan stood firm again as he held a decent strike from Martin Kelly.
Dann was then at fault for Villa’s goal on 32 minutes when he was carelessly robbed of possession on the wing by Benteke, who had plenty to do as he surged towards goal and placed a measured finish beyond Speroni and into the far corner.
Palace responded instantly as Guzan threw up a strong right hand to beat away Zaha’s powerful drive, and Bolasie’s follow-up cannoned off Ciaran Clark’s forehead.
Guzan pulled off another smart save to keep out another Bolasie piledriver, and Palace wandered into the half-time interval wondering how they were a goal down having dominated the opening 45 minutes.
The pattern continued after the break, with Marouane Chamakh heading wide under pressure from Clark before Zaha headed high and wide from Bolasie’s deep cross.
Guzan displayed excellent awareness to beat Frazier Campbell to the James McArthur’s neat flick forward, and Campbell had appeals for a penalty waved away by Michael Oliver moments later after the Palace striker tangled with Clark.
Andreas Weimann then spurned a glorious chance to double Villa’s lead after the ball deflected to him via Brede Hangeland, but the Austrian hurried his shot and Speroni got down well to save with his shins.
Villa’s resolute defence continued to deal with a number of long punts into the penalty area as Palace continued their fruitless search for an equaliser, while Bolasie had another goalbound effort deflected wide by Jores Okore.
The home side almost grabbed a point in the final minute of normal time as Zaha wriggled his way past three defenders and clipped over his best cross of the night, but the ball evaded both Bolasie and Dann and Villa held on to snatch a priceless three points which propelled them to 12th in the Premier League table.
Crystal Palace: Speroni (6), Kelly (6), Dann (5), Hangeland (6), Ward (7), Zaha (7), Jedinak (7), McArthur (6), Bolasie (8), Chamakh (6), Gayle (5)
Used subs: Campbell (5), Puncheon (5)
Aston Villa: Guzan (9), Hutton (6), Okore (6), Clark (8), Cissokho (5), Cleverley (5), Westwood (5), Cole (4), Agbonlahor (6), Benteke (8), Weimann (5)
Used subs: Sanchez (6), Richardson (5)
Man of the Match: Brad Guzan