A last-gasp try from wing Andy Williams deep into extra-time gave Bath a thrilling Powergen Cup semi-final win over Gloucester at Kingsholm.
Gloucester 19 (12)
Pens: Paul (4)
Bath 24 (16)
Tries: Maddock, Williams
Pens: Malone (4)
With the game heading for a drop-goal shoot-out after a pulsating contest, Williams chased his own kick and was just able to touch down in the corner.
Bath looked to be in control of the game with Joe Maddock's try and Chris Malone's accurate kicking.
But Henry Paul kept Gloucester in touch while Seti Kiole crossed on 62 minutes.
It will be Bath's first English cup final for nine years and they will be looking to make it 11 wins from their 11 final appearances on 16 April against Leeds.
But nothing should take away from the performance of the Gloucester team, whose players gave their all and were left crestfallen at the final whistle.
The visitors started the better side and Malone opened the scoring on two minutes after he was high-tackled by Andy Hazell.
Malone's opposite number Paul missed a sitter in front of the posts soon afterwards but was able to level the scores on seven minutes.
The pair traded penalties before Bath flanker Geraint Lewis played in Joe Maddock for a well-worked try which Malone converted.
Paul added a third penalty before Noel Curnier was sin-binned for an infringement as Bath attacked, Malone kicking the three points.
England prop Matt Stevens also saw yellow in the closing stages of the first half and Paul kicked the resulting penalty to reduce the deficit to 16-12 at the break.
Paul should have added another penalty on 43 minutes but his attempt came off the upright.
The second half was generally a scrappy affair as both sides were guilty of making a host of errors.
But James Simpson-Daniel, who is expected to replace the injured Ben Cohen in England's Six Nations game against Italy next week, showed his class with a superb break to give Kiole a simple run in.
Paul's conversion put the home side 19-16 ahead but Malone added a fourth penalty to tie the game at 19-19 with 10 minutes to go.
Both Paul and Malone missed drop-goal attempts and nothing could separate the sides in the two 10-minute extra-time periods until Williams' dramatic intervention.
He placed a superbly-weighted grubber kick to the corner and beat the covering defence to touch down although the score was only given after consultation with the video referee.
There was no time for Gloucester to respond and Bath booted the ball out from the re-start before celebrating a famous win.
Gloucester: Goodridge; Garvey, Simpson-Daniel, Fanolua, Kiole; Paul, Gomarsall; Wood, Curnier, Powell; Eustace, Brown; Buxton, Hazell, Balding.
Replacements: Sigley for Wood (80), Cornwell for Hazell (90), Boer for Balding (24).
Not Used: Azam, Page, B. Davies, Morgan.
Bath: Perry; A Williams, Higgins, Barkley, Maddock; Malone, Walshe; Stevens, Mears, Bell; Borthwick, Grewcock; Lewis, Scaysbrook, Fea'unati.
Replacements: Booth for Maddock (80), Wood for Walshe (90), Barnes for Bell (87), Delve for Lewis (71).
Not Used: Humphreys, Fidler, Davis.
Referee: Ashley Rowden (RFU)