Cheltenham Town slipped to their first defeat in four games, leaving them in the relegation zone with eight matches remaining.
Goals from Tom Nichols and Graham Cummins put Paul Tisdale's play-off chasers 2-0 up before a late own goal restored hope for the Robins.
There was a late push, with substitute Joe Hanks forcing Christy Pym into a low save, but Cheltenham ran out of time.
Cheltenham made a promising enough start, with the returning Wes Burns firing wide after Danny Haynes' pass, but they lost their way and Exeter controlled much of a largely uneventful first half.
They opened the scoring in the 26th minute when a long kick from Pym was helped on by David Wheeler and Nichols lifted the ball delicately over the head of the advancing Trevor Carson.
Carson saved well from half-time substitute Tom McCready in the 58th minute, but Cheltenham showed an improvement in the final 20 minutes, helped by the introductions of Hanks and Omari Sterling-James from the bench.
But Exeter made their task doubly difficult in the 86th minute, when Cummins capitalised on an error from Carson, who did not deal with a shot from Arron Davies after a short corner routine.
A shot from Lee Vaughan was deflected into his own net by Jordan Moore-Taylor in the 89th minute and several scrambles followed in the box, but Cheltenham could not find a leveller and they must dust themselves down ahead of next Saturday's home match against Plymouth Argyle.
Cheltenham Town (4-5-1): Carson; Berry (Vaughan 79), Taylor, Packwood, Braham-Barrett; Burns, Mills, Sparrow (Hanks 72), M Richards, Haynes (Sterling-James 72); Harrad. Subs not used: Gould, Kotwica, Wynter, Deaman.
Exeter City (4-3-3): Pym; Davies, Ribeiro, Moore-Taylor, McAllister; Oakley, Sercombe (McCready 46), Harley; Wheeler (Holmes 68), Cummins (Morrison 86), Nichols. Subs not used: Hamon, Bennett, Keohane, Reid.
Referee: Darren Drysdale
Attendance: 2,880 (584 away).