Saints fly-half Harry Mallinder touched down to put the hosts ahead inside one minute, only for Connacht wing Niyi Adeolokun to hit back on five minutes.
Nic Groom went over after the break to put Saints eight points up before David Heffernan's try cut the gap to three.
Mallinder then kicked a crucial third penalty late on at Franklin's Gardens.
Saints played the final two minutes with 14 men after Jamie Gibson was sent to the sin bin, but Pro 12 side Connacht could not find a way through the hosts' resolute defence.
Jim Mallinder's side, who finished seventh in the Premiership this season, host Stade in the play-off final on Friday, 26 May.
Connacht will join Cardiff Blues - beaten by Stade on Friday - in the draw for next season's Challenge Cup.
Northampton Saints: Tuala; Foden, Tuitavake, Burrell, North; Mallinder, Groom; Waller, Hartley (capt), Brookes, Lawes, Day, Gibson, Harrison, Picamoles.
Replacements: Haywood for Tuala (78), Hutchinson for Burrell (22), Dickson for Groom (66), Ma'afu for A. Waller (61), Denman for Brookes (61), Ratuniyarawa for Day (63), Wood for Harrison (57).
Not used: Olver.
Connacht: O'Halloran; Adeolokun, Poolman, Ronaldson, Kelleher; Carty, Marmion; Buckley, Heffernan, Bealham, Roux, Browne, O'Brien, Heenan, Muldoon (capt).
Replacements: Healy for Kelleher (27), J. Cooney for Marmion (65), Carey for Bealham (66), Dawai for Muldoon (55).
Not used: Delahunt, JP Cooney, Dillane, Blade.
Northampton will take on Stade Francais for a place in next season's European Champions Cup after holding on to beat Connacht in the play-off semi-final.