Tom Brady's second-half score gave struggling Sale Sharks a potentially vital victory over Bath.
Stand-off Nick Macleod kicked three penalties to give Sale a 9-3 lead at half-time, with Tom Heathcote replying.
Bath wing Horacio Agulla's try in the second half, set up by a powerful run by Matt Banahan, gave the visitors a one-point lead.
But Brady crossed before Heathcote's second penalty set up a tense finish.
Sale were returning to Premiership action after last Sunday's 32-14 defeat to Harlequins in the LV= Cup final. Former internationals Mark Cueto and Dwayne Peel came back into the side, with Macleod moving from full-back to fly-half and Danny Cipriani being left on the bench.
Bath welcomed back Test props Paul James and David Wilson, who both returned from Six Nations action. Captain Stuart Hooper also slotted into the starting line-up along with Rob Webber.
Snow and a freezing wind put handling at a premium from the start, although a 40-yard break by Bath second row Dave Attwood might have resulted in an early score for the visitors if the big forward had received any support.
But it was the home team, playing with the wind during the first half, who took the lead when Bath full-back Nick Abendanon's attempted chip through handed Sale possession, and from the subsequent drive the Sharks earned a penalty kicked by MacLeod.
Bath missed a chance to reply when Sale were penalised for not rolling away but Heathcote's attempt from 25 metres drifted wide in the wind.
Two minutes later Heathcote succeeded with a 40-metre attempt, only for Bath to infringe at the restart. Macleod restored Sale's lead from in front of the posts, and stretched it to 9-3 at half time with a fine kick from a difficult angle.
Bath went ahead 14 minutes into the second half when Banahan's powerful run off the back of a driving maul finished with him offloading to former Leicester wing Agulla to stretch over from close range. Heathcote kicked the conversion to give the visitors a slender 10-9 lead.
But Sale responded when Brady, who was only drafted on to the replacements bench when Richie Vernon was injured during the warm-up, popped up on the right to finish a three-quarter move. Macleod missed the conversion though, and Heathcote's penalty brought Bath back to within one point and set up a tense final few minutes.
VIEWS FROM THE DRESSING ROOM
Sale Sharks director of rugby Steve Diamond told BBC Radio Manchester:
"We were fortunate to get off the bottom of the league with the thing that happened with London Welsh [their five-point deduction for fielding an ineligible player] but we've done alright at home since Boxing Day.
"We've been beaten by a couple of the top four sides and Montpellier, but it's starting to become a home.
"In the first half, the wind conditions were all over the shop but I thought we won that fair and square.
"And in the last 10 or 15 minutes we had good composure to get back into the game."
Bath head coach Gary Gold:
"We came in here today setting ourselves goals and objectives to hopefully be in the top four. That's probably gone now but never say never.
"We'll probably be written off by everybody now so we've got a lot to prove.
"It was incredibly frustrating. It was always going to be a game of very small margins. The character shown by the guys after being 9-3 down at half-time was good.
"It's difficult to say whether we were the masters of our own demise. Both lineouts struggled, a couple of calls went our way and a couple of calls went their way.
"I think there were a couple of basic things that we could have done better and our lineout could have functioned better."
Sale: Shepherd; Amesbury, Leota, Tuitupou, Cueto; Macleod, Peel; Dickinson, Jones, Thomas; Gaskell, Ostrikov; Braid, Seymour, Powell.
Replacements: Taylor, Harrison, Buckley, McKenzie, Myall, Fowles, Cipriani, Brady.
Bath: Abendanon; Agulla, Banahan, Eastmond, Biggs; Heathcote, Stringer; James, Webber, Wilson; Hooper, Attwood; Louw, Fearns, Skirving.
Replacements: Batty, Catt, Perenise, Day, Gilbert, Classens, Devoto, Rokoduguni.
Referee: JP Doyle.