A last-minute Claus Jensen penalty miss meant Aston Villa held on to move level on points with Charlton.
Juan Pablo Angel hit the post early on for Villa but Carlton Cole expertly headed the home side in front against the run of play.
Charlton's Matt Holland also struck the woodwork but a slick Villa levelled with Vassell's shot from close range.
Jlloyd Samuel got the eventual winner but Villa breathed a sigh of relief when Jensen missed from the spot.
Aston Villa started brightly, and Gareth Barry had a stinging 25-yard drive turned round the post by keeper Dean Kiely.
8 mins: Cole heads Charlton in front
24 mins: Vassell spins and shoots Villa's equaliser
55 mins: Samuel converts from Barry's pass
90 mins: Jensen balloons a penalty over
The Addicks failed to clear the corner and escaped when Angel headed against the post from a Thomas Hitzlsperger cross.
Charlton made the most of their fortune by scoring from their first attack of the game when Cole - on loan from Chelsea - headed in clinically from a Paolo di Canio cross.
Then it was the home side's turn to be denied by the woodwork when Holland played a one-two with Jensen before seeing his shot hit the post.
Defender Luke Young also put a shot just wide as Alan Curbishley's side looked to add to their lead.
But Villa gathered themselves and impressively brushed aside the setback with Vassell and Angel leading the fightback.
Hendrie (left) and Cole battle for possession
And, in front of watching England manager Sven-Goran Eriksson, Vassell levelled after 24 minutes.
He reacted quickest when Barry's shot was blocked and converted confidently.
The Valley crowd were being served a treat of football in an open and entertaining match.
Kiely was forced to tip over a Lee Hendrie shot on the turn just before half-time but he could do little when Villa took the lead shortly after the interval.
Villa were starting to seize the upper hand and took the lead when Samuel was played in by Barry and slotted home.
The visitors did not let their grip of the game go and Gavin McCann's header bounced off the cross bar as they looked to secure the points.
Charlton had the perfect chance to grab an undeserved point when Jonatan Johansson earned a penalty but Jensen fired over from 12 yards.
Charlton: Kiely, Young, Fortune, Perry, Konchesky,
Kishishev (Johansson 69), Holland, Euell (Powell 79), Jensen,
Cole, Di Canio (Bartlett 69). Subs not used: Royce, Turner.
Aston Villa: Sorensen, De la Cruz, Mellberg, Johnsen, Samuel,
Hendrie, Hitzlsperger, McCann, Barry (Ridgewell 85), Angel,
Vassell (Luke Moore 89). Subs not used: Postma, Dublin, Crouch.
Referee: B Knight (Kent).