Angel and Vassell turned the game around after Luis Boa Morte's early goal, but the match will be remembered for Bocanegra's rash challenge on Mark Delaney 15 minutes from time.
Fulham got off to a dream start as Boa Morte put his off-field problems behind him to fire Fulham in front within 52 seconds.
The winger linked up well with Lee Clark and Brian McBride on the halfway line before setting off on a long run towards the Villa goal, and hitting a low left-foot shot beyond Thomas Sorensen.
Fulham failed to build on their early lead however and Villa fought back to dominate the first period. Lee Hendrie fired a warning shot over the bar before Angel levelled matter on 13 minutes.
The Villa striker nipped in front of Martin Djetou to prod Thomas Hitzlsperger's free kick goalwards. And as the usually dependable Edwin van der Sar fumbled, Angel was on hand to react quickest and notch his 18th goal of the season.
And before long Villa doubled their lead.
From Hitzlsperger's cross the Fulham defence went missing and Vassell leapt unmarked at the near post to nod the visitors ahead.
Boa Morte was by far Fulham's biggest threat and twice he tried to pull his side back into the game before the break. His first long run on 40 minutes came to a disappointing finish, and three minutes later a curling left-foot shot was well stopped by Sorensen.
On 71 minutes they thought they had made a breakthrough as Boa Morte's cross was handled in the area by J Lloyd Samuel. Referee Barry Knight waved away any penalty claims though leaving Fulham furious.
A plastic beer bottle was thrown onto the pitch from the Fulham section of the crowd as Boa Morte argued with the linesman, a matter which may now have to be dealt with.
Soon after Fulham's frustration boiled over, and Bocanegra received his marching orders. Fulham's new American signing jumped two footed into Delaney just inside the Villa half - leaving David O'Leary fuming just yards away on the sidelines.
As Fulham searched for a late equaliser sub Barry Hayles broke down the left-hand side and found McBride in space. But the American was unable to get a sweet strike on the ball which hit the ground and bounced on top of the bar.
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.
Booked: Barry.
Attendance: 16,153.
Referee: B Knight (Kent).