A last-gasp strike from Liam Sercombe cruelly denied Pompey victory at a wet and windy St James Park.
The striker netted in the last few seconds to cancel out Jake Jervis’ early close-range finish and ensure the spoils were shared.
Both sides created chances in an entertaining encounter, but it looked like the Blues had done enough until Sercombe’s late contribution.
Richie Barker made two changes from the side that lost to Torquay the previous week.
Thery Racon and Wes Fogden both returned to the midfield, with Romain Padovani and Jed Wallace dropping to the bench.
It was the hosts who made the brighter start and threatened first when Sercombe’s drive forced Trevor Carson to save low to his left.
But the Blues soon began to settle and Marcos Painter tested Artur Krysiak with a low shot from distance.
And they broke the deadlock on nine minutes after Ricky Holmes had been fouled wide on the left by Jimmy Keohane.
It was Holmes who swung the free-kick into the box towards Ben Chorley and the skipper headed back across goal for JERVIS to poke home.
Exeter looked to hit back immediately and Danny Butterfield whipped in a fine cross before Carson let a Chorley back-pass sneak under his foot and out for a corner.
It was certainly proving to be an open encounter, with the strong wind undoubtedly causing problems for both sides.
Pompey were next to go close when Nicky Shorey’s fierce shot from inside the box was bravely blocked by Pat Baldwin.
But both sides looked capable of scoring and Carson again got down quickly to keep out Scot Bennett’s close-range header after the midfielder had met Keohane’s corner at the far post.
And Pompey’s keeper was the reason why the Blues went in ahead at the break.
Sercombe’s deflected strike looked like it would fall at the feet of Keohane for a simple finish, but Carson somehow managed to claw the ball away to safety.
There was a blow for the Blues just before the interval, however, as Joe Devera went down injured and had to be replaced by Sonny Bradley.
Half Time: Exeter 0 Pompey 1
Pompey came charging out of the blocks and were close to doubling their advantage when Jervis chased Chorley’s long ball forward, only for Exeter substitute Jordan Moore-Taylor to get there first.
Holmes then sent a dangerous low pass across the face of goal that somehow managed to evade everyone.
But Exeter were still in the game and Keohane was left alone to meet Arron Davies’ cross and send a header over the bar.
At the other end, Jervis found some joy down the left before sending in a low ball that the onrushing Holmes could only prod wide.
And Shorey then sent a skidding shot through a sea of bodies, forcing Krysiak to make a decent save low down.
Barker made his second substitution on 79 minutes with Andy Barcham replacing Holmes wide on the left before Patrick Agyemang came on for the tiring Jervis up front.
Pompey received an extraordinary let-off in between those changes with Fogden inadvertently heading past Carson, but the keeper was able to recover and grab hold of the loose ball.
The visitors were still creating openings of their own, though, and Barcham’s cross was just out of reach of both Agyemang and Fogden on 84 minutes.
Ryan Taylor should have secured victory soon after following Krysiak’s mis-kick, but the keeper managed to put enough pressure on the striker to force him to screw a shot wide.
It looked costly when David Wheeler put the ball in the net moments later, but the hosts’ celebrations were cut short by the linesman’s flag.
With just seconds remaining, however, Sercombe was left in space to lash a deflected shot into the roof of the net and break Blues hearts.
Exeter (4-4-1-1): Krysiak; Butterfield, Baldwin (Moore-Taylor 46), Coles (c), Woodman; Sercombe, Bennett (Richards 46), Grimes, Davies; Keohane (Wheeler 75); Nichols
Goals: Sercombe 90+4
Subs not used: Pym, Oakley, O’Flynn, Parkin
Pompey (4-4-2): Carson; Alfei, Devera (Bradley 45+2), Chorley (c), Painter; Fogden, Racon, Shorey, Holmes (Barcham 79); Taylor, Jervis (Agyemang 81)
Goals: Jervis 9
Subs not used: Smith, Wallace, Ertl, Padovani
Referee: Gary Sutton
Attendance: 5,221 (1,442 Pompey fans)