The home side made a strong start at a raucous Recreation Ground, and Hill finished a scintillating move after being set free down the right.
The ball was worked back to Russell before scrum-half Ben Spencer’s kick found flanker Hill to score the game’s first try.
Last season’s beaten finalists Sale soon hit back through captain Curry as the England man powered over the line in the maul after George Ford had kicked into the corner.
Prop Obano scored Bath’s second before Russell kicked a penalty between the posts from the halfway line to open up a 13-point lead for the home side.
Ollie Lawrence’s superb tackle denied O’Flaherty at the end of a brilliant run as the game was played with great intensity.
There was an element of deja-vu for Sale’s second try as Taylor powered over from a similar position to their first try, with the Sharks taking advantage of the power of their maul.
Ford converted and then scored a penalty to suddenly bring Sale to within three points as the visitors capitalised on a good spell at the end of the first half to go into the break only 18-15 behind.
Ford levelled the game up before Tom Curry was introduced for Sale early in the second half, the back-rower making his first appearance since sustaining a hip injury playing for England at the World Cup last year.
Sharks took the lead for what would be the only time in the match when full-back Joe Carpenter pounced on a mistake from Bath to kick a great ball through for winger O’Flaherty to score.
Russell’s fourth successful penalty of the game gave Bath a one-point lead with 15 minutes remaining but the Scotland international missed a chance for his fifth with eight minutes to go to leave the game in the balance.
However, the Bath pack found the strength to power over the line with a converted try from replacement prop Annett, giving them a two-score lead with Twickenham on the horizon.
They will face table toppers Saints, who beat last season’s champions Saracens 22-20 on Friday.