Harry Mallinder marked his long-awaited return to action with a try as Saints stumbled to a crucial 33-20 Champions Cup win against Benetton at Franklin's Gardens.
Mallinder, who was making his first first-team appearance since October 2018 due to injury, dived over inside six minutes for the black, green and gold.
But it was the only bright spot during a gloomy first half, in which Saints made a plethora of errors and lost a series of lineouts.
Benetton took advantage, despite having barely any territory or possession, going in at half-time 10-5 up, to the dismay of the Franklin's Gardens faithful.
But Saints finally found their feet after the break as replacements James Fish, Cobus Reinach and Andy Symons helped to make a real difference.
And further tries from Francois van Wyk, Henry Taylor, Fraser Dingwall and Symons got the job done, ensuring Saints will go to Lyon on Saturday in a position to make the quarter-finals as a best runner-up.
Chris Boyd's boys were dealt a blow before kick-off as George Furbank suffered a groin injury in the warm-up, meaning Ollie Sleightholme came in on the wing and Mallinder moved to full-back.
But there was a glorious moment just six minutes in for Mallinder as Saints skated forward and Taqele Naiyaravoro gave the ball to Mallinder to finish.
James Grayson missed the conversion and Benetton responded with a penalty won at the scrum. Tommaso Allan was the man on the mark from the tee.
It was a messy start to the match, saturated with scrums, and Saints were guilty of just trying to force things too much when in Benetton territory.
The hosts soon lost another player to injury as David Ribbans limped off with what appeared to be an ankle injury, meaning Alex Coles was introduced.
Saints continued to play the game in the Benetton half, forcing replacement scrum-half Charly Trussardi into the sin bin.
But the hosts were frustrated as Grayson's looping pass to Ollie Sleightholme was deemed forward after the wing had dotted down.
Saints were squandering opportunities galore, with Naiyaravoro the next to be guilty of knocking on with the line in sight.
Benetton were still a man down when they sprung a surprise, with Tomasso Benvenuti intercepting and sprinting home to score.
Allan converted and Benetton led, despite the fact they had barely been out of their own half during the opening 35 minutes.
Saints were desperate for an injection of energy before the break but after Sleightholme did superbly to win a penalty, yet another Sam Matavesi lineout went astray.
Benetton headed in at half-time with a 10-5 lead, while the Saints players were about to get a flea in the ear from the coaching staff.
Saints were forced to replace Courtney Lawes at the break as the England star took a knock during a horrible first 40 minutes for his team. Mitch Eadie was the replacement.
There was a desperation for a far better second-half showing from Saints, and they got off to a good start as a slick move resulted in Taylor stretching out an arm to score.
Grayson converted to put Saints back in front at 12-10 up, but Benetton responded with real ambition, booting a kickable penalty to the corner and rumbling over in trademark fashion through hooker Hame Faiva.
Saints turned to their bench, but Benetton were enjoying more territory in the second half.
Allan missed a penalty that was earned at the scrum, giving Saints a big reprieve as they frantically searched for some light at the end of the tunnel.
And they found it as Sleightholme made a scything run and prop van Wyk finished things off.
Grayson converted to make it 19-17 in Saints' favour, but Benetton responded with an Allan penalty that put the Italians back in front once more.
Saints thought they had their bonus-point score when Naiyaravoro went over in the corner, but there was a knock-on from Rory Hutchinson in the build-up and it was no try.
But they didn't have to wait long for that prized fourth score as Dingwall finished well after Saints took a scrum five metres out.
Grayson converted to make it 26-20 and Saints needed to see the game out with eight minutes remaining.
The home side were still pressing for the fifth try to put the game to bed, but Api Ratuniyarawa knocked on under pressure and Benetton breathed again.
However, Symons was able to have the final say, powering over to ensure his side would finish with a flourish.
Grayson converted and the relief was palpable as the final whistle sounded.
Saints: Mallinder (Symons 55); Sleightholme, Dingwall, Hutchinson, Naiyaravoro; Grayson, Taylor (Reinach 55); van Wyk (B Franks 62), Matavesi (Fish 55), Hill (O Franks 62); Ratuniyarawa (Moon 75), Ribbans (Coles 22); Lawes (Eadie 40), Ludlam, Harrison (c).
Benetton Rugby: Hayward; Sarto (Rizzi 72), Benvenuti (Zanon 62), Sgarbi (c), Ioane; Allan, Duvenage (Trussardi 4); Quaglio, Faiva (Makelara 62), Pasquali (Traore 40); Zanni (Fuser 62), Ruzza (Snyman 38); Lazzaroni, Pettinnelli, Barbini.
Referee: Pierre Brousset (France)