First-half tries from Ollie Devoto and Charlie Ewels put Bath on their way to a seemingly comfortable victory, as they went in 17-0 up at the break.
But two quick tries from Johnny Leota and Andrei Ostrikov to start the second half put Sale right back in it.
Bath showed the spirit that has often been lacking this season though, and Semesa Rokoduguni and Will Homer wrapped up the bonus point success as they bounced back from last week's 29-17 loss to the same opposition.
Teimana Harrison stars as Northampton bounce back to sink Bath
However Sale secured a bonus point at the end with late tries from TJ Ioane and Leota.
Bath made a flying start with a try after just three minutes. Spotting a gap in the defensive line, Devoto showed his power to burst through and crossed for the first try after being fed the ball by George Ford. The Bath fly-half converted to make it 7-0.
And they had doubled their lead just before the quarter-hour, Ewels the beneficiary from a quick tap as he powered over. Ford converted once more.
The home side continued to stretch their advantage, Ford keeping the scoreboard ticking over with a first penalty of the afternoon to make it 17-0.
Sale Sharks rugby director Steve Diamond will see his team move into the Aviva Premiership's top five if they beat Bath on Saturday
Image credit: PA Sport
Guy Mercer was proving particularly effective for Bath, regularly turning ball over at the breakdown and slowing down Sale ball.
Bath almost had their third try on the half-hour when Rokoduguni stepped inside a tackle before finding Rhys Priestland inside him, but the Welshman failed to hang on to the ball and the chance went begging.
Trailing 17-0 at the break, Sale needed a reaction and they got it right at the start of the second half, with Leota powering over after a series of pick and drives. Danny Cipriani, on his 100th Sale appearance, converted to cut the deficit to 10 points.
And they added a second in similar fashion, with the Sale forwards turning the screw. This time after a kick to the corner, Russian lock Ostrikov showed his strength to drive over, and despite the best efforts of Rokoduguni, he was able to get the ball down. Cipriani again converted out wide to make it 17-14.
Bath looked to be on the ropes, but a fine break from Devoto got them back on the front foot, and when Ioane handled in the ruck, Ford was able to stretch the lead back to six.
That appeared to get Bath back on track and soon after they had their third try to open a sizable lead once again, Rokoduguni finishing on the right after sustained pressure.
Ford missed the conversion, but it mattered little when replacement scrum-half Homer showed his pace to sprint away down the right for his first Premiership try.
Ford converted from the touchline although Sale had the final say with Ioane and then Leota crossing from close range, Joe Ford converting the latter to secure the losing bonus point.
Bath hold on for victory over Sale
Sale boost European hopes with hard-fought win over Bath