Exeter booked a home final against Northampton in the LV= Cup after overcoming Bath 22-19 at the Rec.
It had looked like the match would be going to extra-time when Tom Heathcote lined up a long-range penalty at the death, but the kick fell short.
But with three tries to Bath's one, Exeter deserved to progress and face the Saints next Sunday.
Bath opened the scoring inside a minute when Nick Abendanon's break was finished off well by Leroy Houston, with Heathcote adding a superb touchline conversion that put the hosts 0-7 ahead. It was the perfect beginning for those home fans enjoying the sunshine at the Recreation Ground.
Henry Slade did respond for Exeter off the kicking tee on seven minutes though following a decent period of pressure to cut the lead to four points.
Exeter were now growing more and more into the game and in fact crossed the line on 25 minutes when Luke Arscott was put over via a lovely inside ball. Unfortunately for the Chiefs, Slade's boot was letting him down and with Heathcote adding three, the interval scoreline was 8-13.
Bath returned from the break in a nervy style and despite another Heathcote penalty, there was a feeling the Chiefs could strike at any time. That they did on 51 minutes as the busy Arscott slipped a tackle in midfield before sprinting 25 metres over. Slade made it 15-16.
Exeter were now on song and when replacement Fetu'u Vainikolo got past Gavin Henson and ran in from 40 metres, Slade's conversion moved Exeter into the lead for the first time. Bath, with Francois Louw on, needed to regroup before the game got away from them.
Heathcote made it 22-19 with eighteen minutes to go before Slade again missed off the tee to hand Bath hope of possibly ensuring extra-time was to be on at the Recreation Ground.
But Heathcote could not tie the game with the last kick of the game as his long-range penalty attempt fell short and Arscott duly booted the ball out to end the semi-final.
Pen: Heathcote 4
Tries: Arscott 2, Vainikolo
Bath: 15 Nick Abendanon, 14 Semesa Rokoduguni, 13 Ollie Devoto, 12 Gavin Henson, 11 Horacio Agulla, 10 Tom Heathcote, 9 Martin Roberts, 8 Leroy Houston, 7 Guy Mercer, 6 Matt Garvey, 5 Ryan Caldwell, 4 Stuart Hooper (c), 3 Juan Pablo Orlandi, 2 Eusebio Guiñazú, 1 Nathan Catt.
Replacements: 16 Ross Batty, 17 Anthony Perenise, 18 Kane Palma-Newport, 19 Mat Gilbert, 20 Francois Louw, 21 Peter Stringer, 22 Ben Williams, 23 Matt Banahan.
Exeter Chiefs: 15 Luke Arscott, 14 Matt Jess, 13 Ian Whitten, 12 Phil Dollman, 11 Tom James, 10 Henry Slade, 9 Dave Lewis, 8 Kai Horstmann, 7 Ben White, 6 Dave Ewers, 5 Damian Welch, 4 Dean Mumm (c), 3 Hoani Tui, 2 Chris Whitehead, 1 Ben Moon.
Replacements: 16 Luke Cowan-Dickie, 17 Carl Rimmer, 18 Alex Brown, 19 James Hanks, 20 James Scaysbrook, 21 Haydn Thomas, 22 Gareth Steenson, 23 Fetu'u Vainikolo.
Referee: Tim Wigglesworth (England)
Assistant Referees: Andrew Pearce (England), Robin Goodliffe (England)
TMO: Rowan Kitt (England)