Exeter suffered a controversial second home Premiership loss of the season to Northampton after Joe Simmonds failed to take a last-minute conversion.
Sam Skinner scored with a minute left but Simmonds' attempt to win the game did not even get off the ground.
Simmonds was ruled to have started his run-up, allowing Saints to sprint from their line and kick the ball from the tee into touch.
Shaun Adendorff and Jack Yeandle traded tries and Piers Francis' boot won it.
The Saints centre landed two penalties in the final quarter to put the visitors 13-7 up before the late drama.
It was a fitting end to a performance of many mistakes by the home side who missed the chance to return to the top of the Premiership.
Saints led through Adendorff's fourth try in six games but were forced to defend for much of the game.
Yeandle's try drew Exeter level before the break but the home side squandered several further chances on Northampton's line.
Sam Simmonds and Will Witty dropped the ball with the line at their mercy and they twice lost line-outs inside Northampton's 22.
Exeter were camped on Saints' line for a great portion of the game but, Yeandle's try from a quick-tap penalty aside, the visitors defended resolutely, even surviving George Furbank's yellow card without conceding a point.
Northampton had the upper hand in the scrum with a first-half penalty leading to a pushover try for Adendorff and another scrum penalty bought them field position from which Francis kicked them ahead.
Francis' second successful penalty, also from 40m, crucially extended the lead beyond an unconverted try.
Exeter gave themselves a chance of snatching a last-gasp victory when they worked lock Skinner over in the right corner.
But Joe Simmonds' conversion attempt never materialised.
The replacement fly-half paused as the Saints players charged towards him, and was left perplexed as referee Christophe Ridley ruled he he had started his run-up with a movement of his shoulder.
Exeter director of rugby Rob Baxter:
"Sometimes you go 'maybe we don't deserve to win this game' and that's probably what happened at the end.
"We had our opportunities, we had 5m pressure that we would normally come away with more than we did but credit to Northampton, they repelled us a few times.
"From what I've been told, I think Joe moved so I don't have any complaints. They charged and that's what you are allowed to do. We complain about what we got wrong ourselves."
Saints rugby director Chris Boyd:
"He (Simmonds) definitely moved. If he had kicked that goal, I think we would probably have been unlucky.
"Over the 80 minutes, I think we did enough to probably deserve the victory.
"When we have come here in the past and Exeter have got five metres from the line, they have usually scored fairly easily against us.
"Today, I thought our goal-line defence and our set-piece work, particularly the scrum, was pretty decent. The difference was that we fronted up physically close to the line in terms of defence."
Exeter: Hogg; O'Flaherty, Hendrickson, Devoto, Hodge; H Skinner, Maunder; Hepburn, Yeandle (capt), Williams, Witty, S Skinner, Ewers, Capstick, S Simmonds.
Replacements: Innard, Kenny, Street, Armand, Lonsdale, Hidalgo-Clyne, J Simmonds, Whitten.
Northampton: Tuala; Proctor, Hutchinson, Francis, Sleightholme; Furbank, Mitchell; Waller (co-capt), Matavesi, Painter, Ribbans, Ratuniyarawa, Isiekwe, Ludlam (co-capt), Adendorff.
Replacements: Marshall, Auterac, Hill, Coles, Wood, Taylor, Mallinder, Naiyaravoro.
Referee: Christophe Ridley (RFU).