City won this relegation six pointer thanks to a Lee Tomlin penalty.
Marlon Pack’s missed spot-kick on Boxing Day cost the Robins a vital three points, so they will view the result as poetic justice.
The windy conditions made it difficult for the players, but it was a poor game, and the defeat sent Charlton to the bottom of the table.
Jose Riga kept faith with ten of the players who served him so well at Rotherham last week. Igor Vetokele failed to recover from an injury he picked up in training earlier in the week, and he was replaced by Ademola Lookman.
New arrivals, Rod Fanni and Yaya Sanogo, were not involved.
The Robins had the better of the early exchanges, and took the lead after 21 minutes. Johann Berg Gudmundsson was penalised for a push in the area, and Tomlin converted the penalty, though Stephen Henderson did get a hand on the ball.
The visitors nearly doubled their advantage 15 minutes later. A deflected Luke Freeman shot had to be clawed away twice by Henderson, who was prone on the ground.
Charlton failed to work the City keeper in the first half, but were more of a threat after the break.
The Addicks huffed and puffed, but did not have the guile to seriously test Richard O’Donnell.
They had a penalty shout of their own 20 minutes from time when substitute, Reza Ghoochannejhad, was felled but Mike Jones awarded a free-kick on the edge of the area.
The Robins saw the game out comfortably, and the lively Freeman came close to increasing their lead on a couple of occasions.
Charlton: Henderson; Solly, Teixeira, Lennon, Fox (Harriott 78); Gudmundsson, Cousins, Jackson (Ba 85), Bergdich; Makienok, Lookman (Ghoochannejhad 63).
Subs (not used): Pope, Sarr, Johnson, Poyet.
Booked: Jackson 75 (persistent fouling), Ba 90 (foul).
BristolCity: O’Donnell; Little, Flint, Golbourne, Baker; Freeman, Pack, Smith, Tomlin (Wilbraham 61); Reid (Wagstaff 66)Kodjia (Agard 79).
Subs (not used): Fielding, Williams, Pearce, Burns.
Goal: Tomlin 21 (pen).
Booked: Smith 5 (foul), Pack 37 (persistent fouling).
Attn: 14,342 (2,208 Bristol City).
Referee: Mike Jones (Cheshire).