Exeter City's chances of going to Wembley Stadium in the Leasing.com Trophy final were cruelly ended by two injury-time goals from Portsmouth at Fratton Park.
The Grecians who had led twice late on through goals from Jake Taylor and a deflected cross from Joel Randall, were undone when Cameron McGeehan and John Marquis scored in injury-time to give Portsmouth what, looked a time, an unlikely victory.
Manager Matt Taylor named a side with a mixture of youth an experience as Tom Parkes and Gary Warren lined-up alongside Jordan Dyer in defence, while Harry Kite got a midfield spot with Nicky Law and Jake Taylor.
However, it was the Grecians who impressed in the first half despite a Portsmouth side, who have not been beaten at home all season, naming a strong starting XI.
Randall and Lee Martin both got good crosses into the Portsmouth box inside the opening 10 minutes before Ronan Curtis then skied an effort of from inside the area as the hosts countered.
Portsmouth when then forced into an early change as Ellis Harrison went off injured to be replaced by Marquis.
Jayden Richardson got down the right and looked to cut the ball onto his right foot after 33 minutes but his shot on the edge of the six-yard box was blocked. Joel Randall then had another effort from 20 yards blocked by a Portsmouth defender before Lee Martin volleyed wide.
However, despite, City and Portsmouth having a number of breaks into the opposition areas neither keeper had been tested as the sides went into the break all square in a first half where both sides cancelled each other out.
Randall then had the first break into the Portsmouth box in the second half, following a strong run forward from Jake Taylor, but his cross into the box was claimed by Alex Bass.
However, after 52 minutes came the first big chance of the match as a cross to the back post was nodded towards the goal line amongst a melee of bodies and Tom Parkes had to be in the right place to boot the effort of his goalline.
Lewis Ward then produced the save of the match as he dived to his left to turn a powerful shot from Oli Hawkins to safety midway through the second half.
However, it was in the final 15 minutes that the match really came to life as Randell Williams, on a substitute, ran to the edge of the box and hit an effort that deflected wide for a corner which Jake Taylor volleyed home after Portsmouth failed to clear it well enough.
However, with eight minutes to go Portsmouth drew level as Parkes blocked Ronan Curtis' effort on the line only for Marcus Harness to follow up and fire in the rebound.
There was further twists to come as Randall, who has netted twice in this competition before, played in a low cross for Ben Seymour that was turned into his own net by a Portsmouth defender with two minutes to go.
That looked to have won the match for City, but McGeehan had a deflected shot, that looped home in the 91st minute, and then Marquis nodded in with virtually the last attack of the match to grab the winner and break City's hearts.
Portsmouth: Bass, Naylor, Burgess, Curtis, McCrorie, Harness, Raggett, Harrison (Marquis, 23), McGeehan, Close (Hawkins, 53), Seddon. Subs not used: MacGillivray, Brown, Bolton, Whatmough.
Exeter City: Ward, L Martin (Williams, 71), Law (Collins, 78), Parkes, Warren, Fisher (Seymour, 66), Richardson, Taylor, Randall, Kite, Dyer. Subs not used: Thompson, Holmes, Jay, Moxey.
Booked: Fisher, Warren
Attendance: 14,735 (366, away)