A last-minute converted try from Chris Ashton compounded Bath's woes this season as they were defeated 15-13 by Northampton at Franklin's Gardens.
Bath, who had England winger Matt Banahan sent off in the 66th minute for reckless use of the boot, looked like they were going to clinch a much-needed victory when Nicky Little inched them 13-8 ahead with a 72nd-minute penalty.
But Ashton, who scored a try in the first half, dotted down with 46 seconds left and Stephen Myler converted to break Bath's hearts and stretch their winless run to seven league games.
The West Country side remain second from bottom, just two points above Leeds.
Northampton, who clinched their fifth straight home win in the Premiership, stay on the coat-tails of leaders Saracens.
Given their grim recent run and the criticism that had come their way, Bath would have been determined to start well at Franklin's Gardens.
But their front row was given a going over in the third minute as Northampton's scrum, strengthened by the return of Scotland prop Euan Murray, got the shove on and earned a penalty in centre-field.
Tempers were frayed as the two packs engaged in a bout of fisticuffs but after that had calmed down, Shane Geraghty badly scuffed his 40-yard penalty along the floor.
Bath regrouped and after Banahan had barged through a powder-puff tackle from England colleague Ben Foden in the 13th minute, the ball was recycled and Luke Watson was held up centimetres short of the line.
Geraghty put the hosts ahead in the 21st minute with a sweetly struck penalty but Little, restored to the starting line-up this weekend, restored parity with an angled three-pointer five minutes later.
Bath were giving as good as they were getting, with flanker Julian Salvi making a nuisance of himself at the breakdown and Banahan running some decent lines.
But somewhat against the run of play, they conceded the match's opening try.
The West Country side lost the ball at the breakdown and the ball was flicked back to Ashton, who kicked forward and chased 50 yards.
The former Wigan rugby league player cruised past Michael Claassens to the free ball, kicked further ahead and grounded in the right corner for a score Geraghty failed to convert.
Little missed a penalty two minutes before half-time but Bath came out all fired up for the second 40 minutes, correcting their foibles at scrum-time and penning Saints back.
And they went ahead for the first time in the match in the 47th minute when Shontayne Hape collected Little's pass on the right wing and burrowed over, with the fly-half adding the extras.
The hole in the Northampton defence was created by another swashbuckling run from Banahan, who was lucky to escape a yellow card after a late tackle on Ashton in the 52nd minute.
Geraghty, who produced a mixed display from fly-half, was replaced by Myler on the hour mark as Saints tried to inject some poise and urgency into their back play.
Bath's first-up defence was aggressive but Banahan took things too far in the 66th minute. The touch judge pinged the England wideman for reckless rucking on Myler and referee David Rose had no hesitation brandishing the red card.
The away side had a little under a quarter of an hour to hold out - but they managed to pull further clear in the 72nd minute when Little landed a penalty from out wide for 13-8.
But Bath suffered a heartbreaking end to the match when Foden set free Jon Clarke, who sent Ashton over in the right corner. Myler converted to win the match for the hosts.
Tries: Ashton 2
Pen: Little 2
Northampton: 15 Ben Foden, 14 Chris Ashton, 13 Jon Clarke, 12 James Downey, 11 Joe Ansbro, 10 Shane Geraghty, 9 Lee Dickson, 8 Roger Wilson, 7 Neil Best, 6 Phil Dowson, 5 Juandre Kruger, 4 Courtney Lawes, 3 Euan Murray, 2 Dylan Hartley (c), 1 Soane Tonga'uiha.
Replacements: 16 Brett Sharman, 17 Santiago Bonorino, 18 Brian Mujati, 19 Christian Day, 20 Scott Gray, 21 Alan Dickens, 22 Stephen Myler, 23 Chris Mayor.
Bath: 15 Nick Abendanon, 14 Michael Stephenson, 13 Matt Carraro, 12 Shontayne Hape, 11 Matt Banahan, 10 Nicky Little, 9 Michael Claassens (capt), 8 Luke Watson, 7 Julian Salvi, 6 Andy Beattie, 5 Stuart Hooper, 4 Danny Grewcock, 3 David Wilson, 2 Lee Mears, 1 David Flatman.
Replacements: 16 Pieter Dixon, 17 Nathan Catt, 18 Duncan Bell, 19 Peter Short, 20 Daniel Browne, 21 Scott Bemand, 22 Ryan Davis, 23 Jack Cuthbert.
Referee: David Rose
Assistant referees: Don Helme, Bob Mullis
Assessor: Tony Spreadbury
Television match official: Matt Peters