The black, green and gold went into the game having lost all four home league matches in 2020, and it was to get even worse as Bath piled on the pain.
The scores were level at 3-3 at the break, but second-half tries from Tom de Glanville and Ruaridh McConnochie proved decisive.
The defeat keeps Saints down in sixth place in the Gallagher Premiership, while Bath have moved into the play-off positions.
It was another horrible night at home for Saints, who appeared to have the advantage when the teams were named, with Bath having rested several stars.
But it didn't pan out like that as Saints really struggled for any of the attacking fluency they have been so proud of since Chris Boyd's arrival in 2018.
Bath more than matched them in the power game and shut down avenues, but Saints didn't help themselves with a series of handling errors in key positions.
The night had started on a disappointing note as Harry Mallinder was forced to withdraw due to the knee injury that saw him miss the first two matches of the restart.
It meant it was a huge promotion for 19-year-old Senior Academy full-back Tommy Freeman, who came in on the wing for his Premiership debut, with Ahsee Tuala shifting to 15 and Tom Collins on the bench.
And Saints started with real noise behind them, determined not to replicate the 'sanitised' showing against Wasps.
It fired up the home side's defence and gave them a chance to attack in the Bath 22, but Zach Mercer did brilliantly to win a penalty to snuff the move out.
And Mercer was involved in a flashpoint soon after as JJ Tonks and Teimana Harrison tried to challenge the Bath No.8 and Tonks was sin-binned for what referee Christophe Ridley saw as a tip tackle.
Saints were having to do plenty of defending in the formative stages of the match, and their desire was typified by a stunning hit from Fraser Dingwall, who shook Josh Matavesi to the core and forced a knock-on in the process.
But Saints lost the next scrum with Bath winning a penalty against the head, allowing Matavesi to have the last laugh with an easy three points.
Dan Biggar had the chance to level the scores, but his penalty went wide of the right post just before Tonks returned from the sin bin.
There was little cohesion in the game, playing into Bath's hands as they continued to increase their confidence with every passing minute.
But after Taqele Naiyaravoro produced a typically rambunctious run down the right, Saints stepped things up to earn a breakdown penalty, which Biggar landed.
Naiyaravoro and Tuala were starting to have an influence and it took a fine tackle from Matavesi to stop the former getting a crucial offload on target.
It was 3-3 at the break, just as it was when Saints beat London Irish 27-3 at the Twickenham Stoop last Saturday - and Boyd's much-changed side needed another big second-half showing.
And they threatened early in the second period after some lovely interplay released Freeman on the right, only for Bath to scramble well to stop him.
Saints tried to crank the heat up by kicking penalties to the corner, but Bath held firm, desperate to deny the home side.
The away side were turning to one of their key weapons, the scrum, to win crucial penalties that allowed them to relive the pressure that had started to build.
And after Tuala failed to gather a Ben Spencer box kick, Bath pounced, sending the ball wide to full-back De Glanville, who stretched out an arm to score in the corner.
Matavesi missed the conversion, leaving Saints five points behind with little more than 20 minutes to go.
They continued to pour forward, but Bath were brutal in defence and errors continued to come from the home side, whose handling just wasn't there.
And that was summed up when Sam Matavesi's pass fell to McConnochie, who picked up and ran in unoppposed to grab a vital score.
Rhys Priestland landed the conversion and at 15-3 down, Saints were staring down the barrel.
They kept trying to knock at the door, but their failure to retain the ball, allied with Bath's defensive determination, kept them at bay as the frustration continued until the final whistle.
Saints: Tuala; Freeman (Collins 59), Dingwall, Francis (Hutchinson 55), Naiyaravoro; Biggar, Taylor; Auterac (van Wyk 53), Fish (Uru 69), Franks (Painter 53); Ribbans, Ratuniyarawa (Bean 63); Lawes, Tonks (Matavesi 59), Harrison (c).
Bath: De Glanville (Priestland 60); Rokoduguni, Clark (McConnochie 62), Redpath, Hamer-Webb; Matavesi, Chudley (Spencer 55); Obano (Boyce 55), Walker (Dunn 50), Judge (Stuart 50); W Spencer (Ewels 50), Stooke; Williams, Bayliss (c) (Reid 51), Mercer.
Referee: Christophe Ridley