Four Danny Cipriani penalties and a strong defensive effort helped Sale to within three points of a Premiership play-off spot with victory at Bath.
Cipriani kicked three penalties in a tight first half to put the visitors 9-6 ahead, while George Ford slotted just two of three efforts in response.
Ford again failed to find the mark as Cipriani teed up his fourth penalty.
Ross Batty grabbed a late try for Bath, but Ford missed the conversion and two drop goal attempts as Sale held on.
The Sharks were victorious, despite suffering a double blow during the warm-up when captain Dan Braid and the Premiership's all-time leading try scorer Mark Cueto were forced out with injuries.
It was Sale's fifth win from their last six away games in all competitions and only Bath's second league defeat at home since December 2012, with their losing bonus point providing little consolation.
Steve Diamond's Sharks led for much of the match, but seemed indebted to referee Dean Richards who showed only one yellow card - to replacement prop Henry Thomas - as they conceded six scrum penalties on their own five-metre line.
Even more telling was that no penalty try was awarded during that period of intense second-half pressure.
A Paul James challenge allowed Cipriani to tee up the opening penalty after seven minutes, with Ford levelling from short range.
Matt Garvey's high tackle on hooker Marc Jones allowed Cipriani to restore the lead, before then adding to it with an effort from nearly 50 metres out.
While England international Ford managed to pull one back, he decisively went on to miss his next two kicks, while Leroy Houston was also denied a try by the television match official.
Sale were six points up when Thomas was yellow-carded on 68 minutes, and despite a series of penalties, Sale managed to scramble the ball away to the growing annoyance of the increasingly-frustrated crowd at the Rec.
The hosts finally forced their way over from a line-out catch and drive on 75 minutes, this time the video referee finding in hooker Batty's favour.
But Ford could not add the extras to edge Bath ahead and his failure would prove crucial.
With less than a minute remaining, the fly-half had a drop goal attempt charged down by Nick Macleod and then was just wide with another attempt in the final play of the game.
Bath head coach Mike Ford:
"We are hurting inside. I am frustrated beyond belief. But look, we've got to move on and prepare to meet Brive next week.
"The scrum-fest in the corner - I don't know how many minutes that took out of the game. With seven penalties on the run, the referee has just got to change behaviours.
"He sent one guy to the bin but I don't know how he didn't go under the sticks [for a penalty try].
"He said he couldn't give a penalty try unless they were going backwards but how can the scrum go backwards if they keep collapsing it?
"Having said all that, for us to move forward, we've got to be able to deal with those sort of tactics. If Saracens were playing tonight, you'd think they'd have dealt with it better than we did.
"There are different pressures on this team now. People are expecting us to beat Sale at home and stay there as a top-three contender. We have to deal with that."
Sale director of rugby Steve Diamond:
"If you've got that much ball in that situation, the onus is on the attacking side to do something with it. All we can do is defend as best we can.
"I think Henry [Thomas] was unlucky to get a yellow card - it was just a slip. I don't think the scrums went back. On another day with another referee, you never know - but it didn't happen, did it?
"We had a 10-hour journey down yesterday on the M6 and then we had our two senior players - Mark Cueto and Dan Braid - cry off in the team run, so we had our backs against the wall.
"As we've proved time and time again, we fought like dogs and got the result.
"Danny Cipriani and Dwayne Peel are good players. Our defence has been good all year. We managed to control their midfield, who run everything, but they ran into a white wall.
"We managed to get the spoils from either turnovers or penalties and edged our way in front."
Bath: Abendanon; Watson, Devoto, Eastmond, Rokoduguni; Ford, Stringer; James, Batty, Wilson; Hooper, Attwood; Garvey, Mercer, Houston.
Replacements: Dunn, Catt, Perenise, Day, Fearns, Young, Henson, Agulla.
Sale Sharks: Arscott; Brady, Leota, Tuitupou, Miller; Cipriani, Peel; Lewis-Roberts, Jones, Cobilas; Ostrikov, J. Mills; Paterson, Seymour, Gaskell.
Replacements: Croall, Harrison, Thomas, Buckley, Easter, Cliff, MacLeod, Forsyth.
Sin Bin: Thomas (68)
Referee: Dean Richards