Ben Foden scored a last-gasp try as Northampton beat Harlequins to end their unbeaten home run at The Stoop.
Saints took an early lead through a Stephen Myler penalty before Quins’ George Merrick crossed for an easy try.
Christian Day and Luther Burrell touched down for the visitors either side of a Ross Chilsholm score to give Saints a narrow lead at the break.
Nick Evans and Ben Botica penalties put Quins up by three, but Foden crossed with the clock on red to steal the win.
Harlequins, unbeaten at home in all competitions this season, were slow off the mark as Saints fly-half Myler put his side ahead from the kicking tee.
But the home side, playing against the wind, scored with their first real period of possession as Merrick finished off a nice passing move and Evans slotted the conversion.
Northampton’s centre pairing of Harry Mallinder and Burrell caused havoc in the first half which lead to an easy try for Day, who scored under the posts before Myler converted.
The running rugby continued as conditions made kicking tricky and Quins’ full-back Chisholm stormed over, before another cutting run from Mallinder and perfectly-timed pass put in Burrell for his third league try of the season.
Saints began the second half with a three-point lead and an extra man courtesy of Tito Tebaldi’s yellow card at the end of the first period, but they gave away two cheap penalties in quick succession and were punished by the boot of Evans.
Northampton flanker Tom Wood spent 10 minutes in the bin as the two teams exchanged a string of penalties to give Quins a 23-20 lead with time up on the clock.
Saints were penalised for holding on and Harlequins simply had to clear the ball to win, but Foden’s acrobatics kept the ball in play and he finished off the move with a simple dummy to hand his side victory.
Harlequins: Chisholm; Yarde, Hopper, Sloan, Walker; Evans (capt), Tebaldi; Lambert, Buchanan, Sinckler, Merrick, Horwill, Luamanu, Wallace, Easter
Replacements: Gray, Evans, Collier, Matthews, Ward, Waters, Botica, Swiel
Northampton: Foden; K Pisi, Burrell, Mallinder, Elliott; Myler, Dickson (capt); Waller, Haywood, Brookes, Craig, Day, Gibson, Wood, Dickinson
Replacements: Marshall, Waller, Denman, Matfield, Harrison, Kessell, Hanrahan, Wilson
For the latest rugby union news follow @bbcrugbyunion on Twitter.