After a forgettable first half, the Frenchman scored twice in five second-half minutes before Bobby Reid marked his first Robins start with a cool lob to halve the deficit.
But Jon Obika, starting alongside Kermorgant for the first time, made it 3-1 with a simple header before captain Johnnie Jackson found the bottom corner with five minutes remaining.
Chris Powell made three changes to the side that drew with Middlesbrough last time out as the Addicks looked to do the double over the Robins for the first time since 1991/92 and secure just their eighth home win of the season.
Bristol City head coach Sean O’Driscoll shuffled his pack for their final match in the npower Championship before relegation to League One after six seasons at this level, and one of his six changes had the next sniff of goal.
The first half needed a spark and the home fans in the Valley thought Callum Harriott was about to provide just that when he ran on to Kermorgant’s through ball but the winger’s shot finished well wide of Tom Heaton’s goal.
Ten minutes later Jackson’s header failed to test Heaton and at the other end David Button, in the side in place of the injured Ben Hamer, comfortably caught Paul Anderson’s right-footed effort in the final move of the first half.
City, without a win in 11 prior to kick off, then fell behind just 92 seconds into the second half when Gower crossed from the right wing and there was Kermorgant to volley home from the centre of the box.
Five minutes later it was 2-0 when the Frenchman grabbed his 12th of the campaign. Chris Solly, making his 100th start for the club, crossed from the left wing and there was Kermorgant to nod home from six yards out.
At the other end Reid came close to an immediate reply with a header from six yards out but he made no mistake in the 59th minute when he netted his first goal for the club. The 20-year-old capitalised on Morrison’s mistake and lobbed the ball home.
Reid, making just his fifth appearance for the Robins, continued to threaten after cutting the gap to one goal and had two chances in quick succession as City continued to improve.
And the visitors would have been buoyed by the sight of an injured Button being replaced by rookie keeper Nick Pope, who was sent on for his first Charlton appearance with 21 minutes remaining.
But with 10 minutes remaining Powell’s men secured the points when Obika nodded home after Kermorgant’s chip had rattled the crossbar.
And it was fitting that their captain rounded off the 2012/13 campaign, Jackson neatly finishing Bradley Pritchard’s pass from six yards out.