The Londoners have now lost only once in 15 Premiership matches and in an amazing run have taken 34 points from a possible 45 with ten wins, four draws and one defeat.
All three goals came in the second half, two in the last three minutes from substitute Jonatan Johansson who had only been on the field six minutes.
It was another disastrous away day for Villa who have won only once on their travels this season but manager Graham Taylor was bemused by the scoreline.
"We must have encountered a black cat," he said after the defeat.
"We had enough chances to have got something out of the game but take nothing away from Charlton.
"What they've achieved has been incredible considering they nearly went out of business ten years ago."
In the first half Peter Crouch, who was replacing the suspended Dion Dublin, squandered a couple of good chances and missed an even better opportunity after the break.
Late in the first half Villa keeper Petr Enckleman made two fine saves to deny Claus Jensen and Kevin Lisbie.
Charlton took the lead in the 51st minute when Jason Euell scored from close range - his tenth goal of the season.
Villa knew it was not going to be their day when they had a couple of efforts cleared off the line and Charlton made sure of the points with two late goals.
In injury time a powerful header from another Charlton substitute, Mathias Svensson, was goalbound when Johansson just got the final touch in front of a Villa defender although the goal may go to the league's dispute committee.
Charlton manager Alan Curbishley praised the depth of his squad after the match as this victory was achieved without six key players who were either suspended or injured.