It was their best win of the campaign and all three of their goals came from foreign players hitting the back of the net for the first time.
It was Fulham's fourth successive Premiership defeat and hardly the best preparation for their UEFA Cup tie on Thursday despite holding a 3-0 lead over Dinamo Zagreb.
They were often off the pace and this enabled Villa to control long spells with Ian Taylor and Gareth Barry showing up well in midfield.
Following a very quiet start Villa's pressure eventually paid off in the 19th minute when Angel opened the scoring.
Seconds before Edwin Van Der Sar had made a flying save to his right to push out a 20-yard shot from Taylor.
From Mark Kinsella's corner on the left Taylor, a doubt right until the kick-off, flicked the ball on for Angel to score with a diving header at the far post for his first goal of the season.
Fulham eventually got their act together near to half time with Steve Marlet forcing Peter Enckelman to make a fine save.
Angel failed to resume for the start of the second half and was replaced by Allback for a rare first-team outing.
Not for the first time this season Villa were slow out of the blocks and the Londoners put themselves back on level terms six minutes into the second half when Boa Morte rounded Steve Staunton before gliding an angled shot past Enckelman.
The Villa goalkeeper distinguished himself minutes later with a save from Junichi Inamoto who shot smartly on the turn.
Villa were badly disjointed but they got their act together when the young German, Thomas Hitzlsperger went on in place of Kinsella.
They went ahead for a second time when Jlloyd Samuel cleverly sent Barry clear down the left. The cross was badly misjudged by Leonhardsen but Allback steaming in fired a low shot past Van Der Sar for his first ever Premiership goal.
Allback then headed another Barry left-wing cross back for Leionhardsen to score with a shot on the half-volley