Olly Barkley kicked all 24 points, including a last-minute penalty, to earn Bath a narrow win at Worcester.
Andy Goode scored four penalties inside 14 minutes to give the hosts a 12-point lead, before Barkley closed the gap.
Goode extended Worcester's lead to 15-6 at half-time but Barkley kicked Bath back into the game after the break.
James Percival's try looked enough for the hosts but the lead changed hands three times in the last 10 minutes, with Barkley's final kick crucial.
Goode's second-minute 40-metre penalty set the tone for the opening exchanges and he soon added three more to give the hosts a 12-0 lead.
Matt Banahan was yellow carded for a deliberate knock-on and he was joined by rival captains, Stewart Hooper and Dean Schofield, who were sin-binned after a substantial melee involving most of the forwards.
Barkley reduced the arrears with two quick penalties but Goode's fifth successful kick ensured the home side had a nine-point half-time lead.
Both sides' kickers continued to trade penalties and Barkley gave Bath the lead for the first time with a 35-metre penalty after 65 minutes.
Percival drove over from close range for the game's only try to put Worcester ahead again, but Goode's conversion rebounded back off a post which proved costly.
Barkley's longest penalty of the game gave Bath a one-point lead with six minutes remaining.
Warriors then had two penalties in the Bath 22, Goode surprisingly missed the first but kept his nerve to kick the second.
And, with the last kick of the match, Barkley made no mistake with his eighth penalty to earn a one-point victory.
VIEW FROM THE DRESSING ROOM
Worcester coach Richard Hill:
"We shot ourselves in both feet. It was a game that we should have won.
"We allowed them back into the game by conceding six penalties in a nine-minute period early in the second half which enabled them to draw level.
"The referee [Luke Pearce] was particularly hot at players not rolling away from the tackle area and those penalties cost us the game.
"Bath have the best defence in the league but we should have scored more before half-time and put them away."
Bath coach Toby Booth:
"It wasn't pretty. From where we were at half-time we did very well to bounce back.
"We had no ball at all in the first half and Andy Goode's monster right boot kept pegging us back and we couldn't get out of our half.
"We showed great resilience to get back into the game and nick it at the end.
"At half-time we knew we had to adjust and it was a complete reversal of the first 20 minutes."
Worcester Warriors: Pennell; Drauniniu, Grove, Matavesi, Lemi; Goode, Perry; Mullan, Lutui, Andress, Percival, Schofield (capt), Chris Jones, Betty, Taulava
Replacements: Carlisle for Matavesi (66), Arr for Perry (66), Kvesic for Taulava (66), Gillies for Schofield (71).
Not Used: Hayes, Ceri Jones, Currie, Howard.
Sin Bin: Schofield (20).
Bath: Abendanon; Biggs, Hipkiss, Banahan, Eastmond; Barkley, Claassens; James, Mears, Wilson, Hooper (capt), Day, Fearns, Louw, Skirving
Replacements: Attwood for Hooper (63), Cuthbert for Banahan (72), Catt for James (72), Batty for Louw (72), McMillan for Wilson (76).
Not Used: Palma-Newport, Skuse, Devoto.
Sin Bin: Banahan (14), Hooper (20).
Referee: Luke Pearce (RFU).