Bath continued their 34-year unbeaten record against Exeter with a gutsy and pulsating Premiership win.
Early Bath tries by Ben Williams and Kyle Eastmond were answered by Brett Sturgess in a flowing first half.
Stephen Donald and Gareth Steenson traded penalties either side of the break but Francois Louw's try gave Bath a 12-point cushion on the hour.
The hosts went down to 14 men when Dan Hipkiss was sent off and Ignacio Mieres's try set up a tense finale.
The result sees Bath leapfrog Exeter into sixth place in the Premiership and extends the Chiefs' run of defeats away from home to six in all competitions.
The home side were superb throughout the opening quarter as their dominant pack drove them forward and their rapid recycling proved too much for their visitors.
Chiefs were not aided by some woeful tackling, first on Nick Abendanon and then Williams, that saw the Bath inside centre go over in the right corner in the fourth minute, before Donald converted.
Bath were switching their first receiver at breakdowns as they looked to get Eastmond into the game, and it was their pack, with Louw to the fore, who were behind the winger's try.
After dismantling the Chiefs in a 10th-minute scrum, the Bath loose forwards put the hosts on the front foot and, after a stomping line break by Louw, Donald sent the looped try-scoring pass to Eastmond but the New Zealander could not convert.
The Chiefs struggled for continuity and were not helped when Steenson failed to convert two penalty shots.
But the Devon side came back through Sturgess on 22 minutes after they outflanked Bath's defence twice in a flowing move down the left and into the right corner.
Steenson, who had earlier struck the post and missed with penalty attempts, was wayward once more with the conversion.
Donald's 38th-minute penalty, after more sustained Bath pressure, proved the final score of a half dominated by the home side.
Exeter regrouped at the break and improved their retention, culminating in a first successful Steenson kick on 48 minutes after nine phases of play that put them within seven points of Bath at 15-8.
The Chiefs looked determined to keep the ball alive until the gaps appeared and were it not for a series of final passes going awry they could have added a second score before the hour mark.
Instead it was Bath who scored next when the superb Louw rounded off a sweeping move from deep.
Donald's hurried conversion attempt was inches wide but the Chiefs reverted to their multi-phase approach which saw Hipkiss sin-binned on 66 minutes.
Exeter deserved credit for spurning the posts twice and were rewarded when replacement fly-half Mieres dummied his way over and converted to make it a five-point game with 12 minutes on the clock.
Hipkiss was then sent off, while still off the field, when he prevented Exeter taking a quick throw-in.
But after withstanding an onslaught from the visitors, Donald's 79th-minute penalty ensured the Chiefs left empty handed.
VIEWS FROM THE DRESSING ROOMS
Bath head coach Gary Gold:
"I'm very proud of the character we showed but not so much of certain aspects of the way we played in the second half, such as the penalty count.
"We'll take that win against a team of that quality though. We've got massive respect for Exeter. They're one of the toughest opponents we've played this season."
Exeter head coach Rob Baxter told BBC Radio Devon:
"I'm not disappointed with the result so to speak, but you can be frustrated with elements of your performance.
"In the first half, we didn't look like a side who wanted to get out there and take the game by the scruff of the neck.
"In the second half a few gilt-edged opportunities did open up for us, we didn't convert them for various reasons, and ultimately that cost us the game.
"You don't win many games if you don't go for it for the full 80 minutes. I genuinely don't think we did. We played OK."
Bath: Abendanon; Eastmond, Hipkiss, Williams, Biggs; Donald, Claassens; James, Mears, Wilson; Day, Attwood; Fearns, Louw, Skirving.
Replacements: Vesty for Williams (70), Sharman for Mears (72), Perenise for Wilson (57), Hooper for Day (56), Skuse for Fearns (24), Catt for Louw (67).
Sin Bin: Hipkiss (67).
Sent Off: Hipkiss (73).
Exeter: Arscott; Camacho, Dollman, Shoemark, Jess; Steenson, Thomas; Sturgess, Alcott, Rimmer; Mumm, Hanks; Johnson, Scaysbrook, Baxter.
Replacements: Whitten for Arscott (54), Mieres for Steenson (54), Barrett for Thomas (72), Whitehead for Alcott (52), Muldowney for Hanks (54).
Ref: Wayne Barnes (RFU).