Danny Green's 55th minute goal proved to be the difference as City gave the League One leaders a stern test at St James Park.
The former Dagenham man's right-footed cross caught out Artur Krysiak and the&nbsp;Pole couldn't&nbsp;keep the ball out of the back of&nbsp;his net.
Second half substitute Guillem Bauza had a header and a low shot on the spin well saved by former Grecian Ben Hamer but Chris Powell's men held on to secure a league double over City.
It was all change upfront for Paul Tisdale with Jake Taylor and John O'Flynn stepping up from the bench to replace Richard Logan and Guillem Bauza. The other change saw Danny Coles coming in for Dan Nardiello to offer another body at the back.
It meant Exeter lined up with five at the back behind a three man midfield of David Noble, Scot Bennett and James Dunne. Charlton meanwhile named former Grecians Hamer and Matt Taylor in their starting line-up, the duo returning to St James Park for the first time since their departures at the tail end of last season. Taylor in particular got a very warm welcome from the home supporters.
And it was the former City skipper who provided the first meaningful threat on Artur Krysiak's goal. A ball was floated in from the let-hand side and Taylor tried an ambitious bicycle kick that was cleared by Richard Duffy inside the six yard box.
Five minutes later it was the home side's turn to threaten down the left-hand side, a move that resulted in Scott Golbourne's cross being headed at Hamer by the bleach blond head of O'Flynn. Noble was next to try his luck with a right-footed free kick that ended up in the away end. Three minutes later Taylor tried his luck against his former Reading team-mate Hamer with a header from Dunne's chipped ball but he couldn't test Charlton's number one.
At the other end Troy did very well to head Johnnie Jackson's dangerous corner away from the lurking Michael Morrison. And Jackson was on the end of the away team's next threatening move, his touch deserting him after he was found by Bradley Wright-Phillips' cross from the right wing.
City certainly held their own throughout the first half with the tireless running of the attackers in particular making life a little uncomfortable for the table-topping visitors. On 37 minutes centre-back Morrison switched off allowing Taylor to rob him and after weighing up his options the Welshman looked up and sent a curling effort over the crossbar from 20 yards.
The final chance of an evenly match opening 45 saw Bennett put in a superb challenge on Bradley Pritchard and teed up Taylor who in turn fed Dunne and after weaving his way down the left hand side he drilled an effort over the crossbar from the angle.
It was a first half Tisdale would have been pleased with. Charlton have scored goals for fun all season but they'd struggled to test Krysiak thanks to the fine work of the City back five.
The first opportunity of the second half saw Noble warming the hands of Hamer with an ambitious long range effort that was straight at the former City loanee.
At the other end a superbly sliding tackle from Duffy denied Wright-Phillips as the former Argyle man was about to pull the trigger.
The 828 away fans wouldn't have to wait long to see their side make the breakthrough though, and it was a goal Krysiak won't want to see again. Former Dagenham winger Green flew down the right hand side and after getting the better of Coles he curled an effort towards the near post which Krysiak misjudged and he could only push into the net under pressure from Yann Kermorgant.
Tisdale responded instantly with a double change, replacing the impressive Duffy with Bauza while Logan was introduced for O'Flynn as the Grecians looked to find the back of the net for the first time since Chesterfield away.
David Noble then went down unchallenged during City's next attack with what looked like a game-ending injury but the captain was back on shortly after as City forced a corner infront of the Bank.
The travelling support behind Krysiak's goal then thought they'd scored a second shortly after. Wright-Phillips' inch-perfect cross was meant by the diving head of Kermorgant inside the box but the ball crashed just inches wide with Krysiak rooted to the spot.
Nardiello was then introduced for Taylor which meant City had reverted back to the three strikers (Nardiello, Bauza and Logan) that started against Hartlepool in the last home match.
And two of the trio combined for arguably Exeter's best chance so far on the hour mark. Nardiello got to the byline and sent a perfect cross onto the head of Bauza which was kept out low to his right by the diving Hamer, the first save the keeper had to make but a vital one.
Two minutes later only the offside flag spared the blushes of Logan as he missed a huge chance for the home side. City's number 20 had knocked the ball down into the path of Bauza who span and forced Hamer into a save with his effort. Hamer was then only a spectator as the ball rolled into the path of Logan who thumped the ball into the Big Bank.
Time was running out for City to end their goal-drought, on 85 minutes Bennett turned Noble's low free kick goalwards but Hamer was up to it and from the resulting goalkick substitute Leon Clarke drilled an effort that whistled past Krysiak's post.
Bauza had the last real opening of the match after spinning inside the box but he couldn't make a decent connection and the final whistle blew seconds later.
So another low scoring game involving the Grecians and for the majority of the 90 minutes you'd have struggled to pick which side is clear at the top of the table and which are down the wrong end. The Grecians showed determination and plenty of effort throughout but they just couldn't carve out enough clear cut chances to really threaten a shock victory.
Tisdale will undoubtedly be pleased with some of the invidiously performances, especially the likes of Bennett, Duffy and Troy, and the manager can take plenty of positives ahead of the visit to Bournemouth next Saturday.