Harry Mallinder kicked 16 points as Saints beat Connacht 21-15 to set up a Champions Cup play-off final against Stade Français.
Mallinder opened the scoring and kicked well from fly-half, with scrum-half Nic Groom getting the other score for Jim Mallinder's men.
But it was far from straightforward for Saints, who went down to 14 men with two minutes to go as flanker Jamie Gibson was sin-binned.
Connacht pushed on in pursuit of the converted try that would have won the game, but Courtney Lawes showed his class, making a huge tackle to win his side a scrum and finish the match.
There was a roar of relief from the Saints supporters at Franklin's Gardens, which will now host Stade on Friday night in a shootout for a place in next season's Champions Cup.
Saints had got off to a flying start against Connacht as Nafi Tuitavake sprung forward and after fine work from Ben Foden and Ahsee Tuala, Mallinder picked up the ball to dive over.
It had looked like there was a knock-on in the build-up to the try, but it was not reviewed and Saints celebrated, with Mallinder converting his own score with aplomb.
But Connacht hit back immediately as Craig Ronaldson's grubber gave Niyi Adeolokun an opening to score.
Ronaldson converted to level it up, but Saints were in front again when Mallinder squeezed a penalty through the posts.
Saints lost Luther Burrell to injury after the centre was involved in a huge collision in the build-up to the penalty, with Rory Hutchinson coming on as a replacement.
Mallinder soon grabbed another three points from the tee to make it 13-7, but Connacht cut the gap with a Ronaldson penalty in a nip and tuck encounter.
It was to remain 13-10 at the break in a game that had petered out since the early flashes of quality that led to the tries.
French referee Mathieu Raynal was forced off with an injury at half-time, being replaced by countryman Pascal Gauzere.
Saints were desperately trying to get in the ascendancy and Connacht were battling well, until Groom finally found a way through.
The impressive Tuala took Saints within range and Groom popped up, found space and dived over for the score.
Mallinder missed the conversion and Connacht again responded with real heart, driving Saints over from a lineout, with hooker David Heffernan scoring.
Ronaldson failed to add the extras, leaving the deficit at three points with 17 minutes remaining.
The nerves were jangling as the game entered the final 10 minutes, with Saints just not able to put Connacht away.
Mallinder did his best with the boot, landing a penalty that extended the lead to six points with nine minutes to go.
But the tension increased two minutes from time as Connacht flew forward and Gibson was yellow carded.
Connacht went for the corner, knowing a converted try would win the game.
But Saints held firm and a huge intervention from Lawes won the game as the Lions lock made a massive hit that helped to take the ball and the game from Connacht's grasp.
Saints: Tuala; Foden, Tuitavake, Burrell (Hutchinson 23), North; Mallinder, Groom (Dickson 67); A Waller (Ma'afu 60), Hartley (c) (Haywood 79), Brookes (Denman 60); Lawes, Day (Ratuniyarawa 63); Gibson, Harrison (Wood 57), Picamoles.
Connacht: O'Halloran; Adeolokun, Poolman, Ronaldson, Kelleher; Carty, Marmion (J Cooney 66); Buckley, Heffernan, Bealham (Carey 67); Roux, Cannon (Dillane 49); O'Brien, Heenan (Dawai 56), Muldoon (c).
Referee: Mathieu Raynal (France)