A superb kicking display from George Ford maintained Bath's dominance over Exeter and strengthened his side's hold on a place in the Premiership top four.
With the scores level at 3-3, Exeter lock Damian Welch showed superb speed to squeeze in at the corner but Ford edged Bath into a 9-8 half-time lead.
Ford scored a fourth penalty, but Dean Mumm's hack through and try put Exeter back into a narrow lead of their own.
But three more Ford kicks meant Exeter had to settle for a losing bonus point.
For all their success since promotion to the Premiership in 2010, Exeter's record against Bath - one of English rugby's traditional powerhouses - is one of the anomalies, with the Devonians' last win against their west country rivals coming back in 1978.
Steenson opened the scoring with a penalty after seven minutes after a scorching break by winger Jack Nowell created the opportunity, with Bath defenders taking out his support off the ball.
Ford levelled the scores three minutes later but Exeter were showing an admirable willingness to stretch Bath's defence with ball in hand.
The visitors found some fierce resistance but a moment of magic from Jess, who crabbed across the pitch before spotting a gap and racing 40m upfield, created the opportunity for Welch to show finishing skills that any of the wingers on show at the Rec would have been proud of.
Taking the ball in his stride, Welch stormed past three Bath defenders and dotted down one-handed in the corner for a memorable score.
Steenson's conversion was off-target and Ford cut the gap after a breathless passage of play and a third Ford kick - in the final action of the first half - gave his side the narrowest of half-time leads.
Buoyed by their end to the first half, Bath made a dominant start to the second half with a succession of penalties giving the home side a dominant base but Exeter did just enough to stop them crossing the tryline.
Another Ford kick stretched Bath's lead to four points but Exeter hit back as captain Mumm hacked a loose ball through and - like his second-row partner Welch - the Australian showed great pace to win the race to touch down.
The conversion attempt hit the post, and Steenson's goalkicking near-misses ultimately proved costly for his side, with Ford notching his fifth penalty shortly before a well-struck drop-goal as his side began to pull clear.
Steenson narrowed the gap to just two points with a fine long-range penalty but saw another effort drift just wide before Ford settled things with a late penalty, his sixth from six attempts in a faultless personal display.
Views from the dressing rooms
Bath coach Mike Ford:
"Exeter are a good side. They challenge you and if you give them the ball, you won't see it again for three or four phases.
"Our ball control was poor in the first half as were our kicks. But we still went in 9-8 at half-time. At times rugby doesn't go all your way. You've got to find a way to win - and we did. You have to credit our defence.
On George Ford: "He just wants to keep playing. The more pressure, the more decisions he has to make, the better he'll become.
"This is his first full season where he's playing every week so he'll only get better. Yes, he kicked his goals. He's pleased with his dropped goal as well."
Exeter head coach Rob Baxter:
"It was a great game of rugby and it could have gone either way, really. I was really pleased with our attitude.
"We were always in it. There were a few individual errors but if you are going to focus on those when you are doing your review, then it probably means that the performance as a whole is pretty good.
"I just said to the players, I think we're bubbling along really well.
"At top level it's all about being competitive for the full 80 minutes. Today's performance would have beaten a lot of sides. Their kicker could have had an average day and we would have won.
"That's why you've got to sit back and look at the bigger picture."
Bath: Watson, Agulla, Joseph, Devoto, Banahan, Ford, Stringer, Catt, Webber, Wilson, Day, Attwood, Garvey, Louw, Houston.
Replacements: Abendanon for Watson (8), Heathcote for Devoto (75), Roberts for Stringer (74), James for Catt (46), Batty for Webber (61), Perenise for Wilson (63), Caldwell for Day (54), Fearns for Garvey (27).
Exeter: Arscott, Nowell, Dollman, Shoemark, Jess, Steenson, Lewis, Moon, Yeandle, Tui, Mumm, Welch, Johnson, White, Ewers.
Replacements: Thomas for Lewis (69), Sturgess for Moon (64), Whitehead for Yeandle (54), Horstmann for White (69).
Not Used: Brown, Armand, Slade, Whitten.
Ref: Matthew Carley (RFU).