Villa capitalised on poor defending from Fulham to hit back from conceding an early goal and take the points.
Luis Boa Morte put Fulham ahead after just 52 seconds when he slammed home Lee Clark's pass from an angle.
Juan Pablo Angel equalised after Edwin van der Sar parried his initial header before Darius Vassell was left unmarked to head the second at a corner.
Fulham's misery was complete when Carlos Bocanegra was sent off for a two-footed challenge on Mark Delaney.
Chris Coleman's side had the perfect start with Boa Morte's goal, but it was all downhill from there for Fulham.
Villa's impressive recent run continued as they turned the game around and were ahead by half-time.
Fulham goalkeeper Van der Sar had to take the blame for the equaliser.
He should have easily snapped up Angel's header, only to pat the ball back into his path for an easy finish.
52 secs: Luis Boa Morte puts Fulham ahead
13 mins: Juan Pablo Angel scores Villa's leveller
32 mins: Darius Vassell heads Villa into the lead
75 mins: Carlos Bocanegra is sent off for a foul on Mark Delaney
And Coleman will have been furious that his normally reliable defence allowed the tiny Vassell to head Villa into the lead.
Fulham responded before the interval, with Villa keeper Thomas Sorensen making a great one-handed parry from Boa Morte's shot.
And, on the stroke of half-time, Sorensen blocked Sean Davis' goalwards flick from Boa Morte's cross.
The Londoners started the second half as they ended the first - attacking Villa.
First, Davis was in with a sight of goal but snatched at his shot.
Olof Mellberg, whose mistake had let Boa Morte in for Fulham's opener, had a lucky escape when he allowed Steed Malbranque to race goalwards before he was penalised for handball.
It was a decision that angered Fulham fans, and the game was held up when the linesman involved alerted referee Barry Knight to a bottle which had been thrown onto the pitch from a section of Fulham fans.
Then Bocanegra was sent off for a shocking challenge which left Delaney requiring a stretcher.
The fourth official had to restrain Villa boss David O'Leary, and Fulham defender Ian Pearce did little to calm the situation when he appeared to accuse the manager of ensuring Bocanegra was sent off.
McBride hit the bar with a bouncing shot in injury-time as Villa held on for their fourth straight win.
Fulham: Van der Sar, Volz, Knight, Pearce, Bocanegra, Malbranque, Clark (Petta 45), Djetou (Hayles 70), Sean Davis, Boa Morte, McBride.
Subs Not Used: Crossley, Legwinski, Inamoto.
Sent Off: Bocanegra (75).
Booked: Sean Davis, Knight.
Aston Villa: Sorensen, Delaney (De la Cruz 77), Mellberg, Johnsen, Samuel, Hendrie (Ridgewell 89), Solano, Hitzlsperger, Barry (Whittingham 80), Vassell, Angel.
Subs Not Used: Postma, Crouch.
Referee: B Knight (Kent).