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.
The first half needed a spark and the home fans thought Callum Harriott was about to provide it when he ran on to Kermorgant's through ball but the winger's shot finished well wide of Tom Heaton's goal.
Bristol City, without a win in 11 prior to kick-off, fell behind just 92 seconds into the second half when Mark 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.
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 Michael Morrison's mistake and lobbed the ball home.
The visitors would have been buoyed by the sight of an injured David Button being replaced by rookie goalkeeper Nick Pope, who was sent on for his first Charlton appearance with 21 minutes remaining. Albert Adomah looked to test the 21-year-old with the next attack but the Ghana winger dragged his effort wide.
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.