Much if not all of the action was packed into the first half, with Charlton racing into an early lead thanks to Jamie Ward’s lobbed effort.
However Rovers fought back through Joe Martin’s stunning strike – his first for the club, but the hosts restored their lead on the stroke of half-time through Joe Aribo.
The visitors pressed in the second-half for another goal and had plenty of posession, but were killed off in stoppage time when Karlan Grant capitalised on Jack Bonham going up for a corner to notch an easy finish and seal the result.
Going into the game, Darrell Clarke made five changes to the side that hosted Barnet on Wednesday night.
Jack Bonham returned between the sticks, as did Tom Lockyer in the heart of the defence following his time away on international duty.
Daniel Leadbitter also came back in with Joe Martin on the opposite defensive flank and Stefan Payne joined Tom Nichols in attack.
The hosts had an early half-chance from the game’s first corner when Jason Pearce ghosted in at the nearpost but sent his side-footed volley well over the crossbar.
A few minutes later and Charlton should really have taken the lead but failed to do so through great keeping by Bonham yet perhaps slack finishing.
Nicky Ajose got beyond Leadbitter down the left and played an inviting cut-back for George Lapslie who had the goal at his mercy, but his strike was central and smothered really well by Rovers’ stopper.
The goal did come however moments later when Jamie Ward got in behind off the back of Jed Steer’s long ball and cooly looped the ball over the onrushing Bonham to give The Addicks a 1-0 lead after 10 minutes.
Rovers’ first real passage of promise came after 25 minutes, firstly when Payne got free down the right side and fired a dangerous ball across the face of goal that, had Nichols maybe been a shoe size or two bigger, would have ended up in the back of the net.
Liam Sercombe recycled the ball out on the left and found Ollie Clarke in the middle, he turned his man and onto his left foot and looked to curl the ball into the top corner but was just wide of the target.
The Gas’ improvement in the final third soon paid dividends as the unlikely source of Martin drew the game level and did so in some style.
Sercombe broke with the ball through the centre and had options left and right, one of whom was the overlapping Martin who had the ball fed into his path and rifled an absolute arrow beyond Steer and into the top corner to notch his first goal for the club.
D.Clarke’s men had to weather a slight storm following their equaliser and managed to resist their hosts’ advances and after doing so tried to make attacking tracks of their own.
First Sercombe lashed a dipping half-volley just wide before O.Clarke won possession high up and moved into the box before forcing a good save from Steer with a powerful strike.
The game was becoming really end to end and Charlton had a an opportunity to restore their lead when Karlan Grant found his strike partner Ajose free in the box with a smart pull back, but Ed Upson made an excellent recovery block to stifle the attempt.
The Addicks came close again a minute before the break, when Ajose’s 25-yard free-kick took a nick off the wall and left Bonham rooted to the turf, thankfully it bounced just wide of the post.
However shortly after Lee Bowyer’s side did manage to find a second goal and go into the interval with the lead, as Ajose nodded a cross back across goal that was headed into the top corner by Joe Aribo, despite Bonham getting a hand to the ball.
There was little in the way of action in the opening stages of the second half, however Rovers did start it well as they strung together some nice moves and kept the ball well.
James Clarke had twice been threatened by the pace of Grant and twice did well to stifle him, using his body well to protect the ball and clear danger.
D.Clarke made his first change on 64 minutes, a double switch that saw Kyle Bennett and Alex Rodman introduced in place of Payne and O.Clarke.
Not long after the substitution Bennett was involved, as he controlled a high ball and teed up Sercombe on the edge of the box, who struck a sweetly-hit half-volley that either side of the keeper would have caused problems but was unfortunately straight at him.
With little over 15 minutes left on the clock, Rovers made their final change as Chris Lines came on in a straight swap for Upson.
Rovers kept knocking on the door in search of their second equaliser of the afternoon, even to the point where Bonham went up for a corner in stoppage time, however the price was paid for such a move.
Charlton cleared the ball and Grant raced beyond all the yellow shirts and more or less walked the ball into the net to seal the points for his side.
Rovers XI: Jack Bonham (GK), Daniel Leadbitter, James Clarke, Tom Lockyer (c), Tony Craig, Joe Martin, Ollie Clarke (Alex Rodman, 64′), Ed Upson (Chris Lines, 74′), Liam Sercombe, Stefan Payne (Kyle Bennett, 64′), Tom Nichols.
Subs: Adam Smith (GK), Joe Partington, Alex Jakubiak, Gavin Reilly.
Charlton XI: Jed Steer (GK), Anfernee Dijksteel, Kyrstian Bielik, Patrick Bauer, Jason Pearce, Jamie Ward (Reeco Hackett-Fairchild, 88′), Joe Aribo, Karlan Grant, Chris Solly, Nicky Ajose (Tarique Fosu, 11′), George Lapslie (Mark Marshall, 82′).
Subs: Dillon Phillips (GK), Toby Stevenson, Naby Sarr, Albie Morgan.
Attendance: 10,328 (693 away)