Tyrone Mings’ 21st-minute header proved enough for Unai Emery’s side in a game that saw them rarely troubled by their opponents.
Having extended their unbeaten run to 10 matches, eight of which have been wins, Villa leapfrog Tottenham into fifth, a point better off than them, ahead of Spurs hosting fourth-placed Manchester United on Thursday.
Emery has overseen some turnaround for the midlands outfit, who were 17th, outside the relegation zone on goals scored, when they lost 3-0 at Fulham in October, their final game under the Spaniard’s predecessor Steven Gerrard.
Marco Silva’s Fulham, meanwhile, remain ninth in the table.
After the Cottagers went close to taking the lead in the opening minute, Andreas Pereira sending an acrobatic effort wide, early pressure from Villa included Ashley Young’s shot deflecting behind.
Ollie Watkins went down in the box via a challenge from Tosin Adarabioyo, prompting home shouts for a penalty, but nothing was given.
Then the visitors – having already made a late change to their starting XI by replacing Willian with Manor Solomon – were forced into a 17th-minute substitution, Harry Wilson unable to continue as Bobby Decordova-Reid came on.
Moments later Villa were in front as Mings connected with John McGinn’s corner and flicked the ball past Bernd Leno into the far corner, the defender’s first goal for the club since November 2021.
Leno subsequently dealt with a Watkins shot and McGinn header as Villa continued to look well in control of proceedings for the remainder of the half, with Fulham struggling to get much going.
After that remained the case for the Cottagers in the early stages of the second half – while Villa also showed little attacking threat – Silva opted to make a triple change midway through, introducing Carlos Vinicius, Tom Cairney and Cedric Soares.
Watkins then sent a shot off-target as Adarabioyo worked to thwart him, before Douglas Luiz looped an effort over the visitors’ bar.
With only a goal in it, Villa fans might have been feeling nervy, and the ball was in the hosts’ net in the 83rd minute when Harrison Reed’s delivery went in off Mings – but the flag went up for offside.
There was little further from Silva’s side after that, while the hosts might have scored again in stoppage time as McGinn flashed a shot wide.