|Bristol (18) 25|
|Tries: Penalty try, Morahan, Sheedy Con: Sheedy Pens: Sheedy 2|
|Worcester (24) 27|
|Tries: Hill, Te'o, Adams Cons: Weir 3 Pens: Weir 2|
Worcester internationals Ted Hill, Ben Te'o and Josh Adams all scored tries as the Warriors hung on to narrowly win at Premiership relegation rivals Bristol.
But Warriors had to see out a tense final 10 minutes with 14 men after Te'o picked up their second yellow card.
Niall Annett was sin-binned too as the hosts were given an early penalty try.
Warriors hit back to lead 24-18 at the break but, despite Callum Sheedy's late converted try on top of Luke Morahan's first-half try, Bristol got no closer.
Worcester's sixth league win of the season was their second over Bristol, after beating the Bears 52-7 at Sixways in October but, in a classic seesaw encounter, this one was a lot closer.
It was also potentially a crucial one, further clouding the Premiership relegation picture, as it keeps both Bristol and Friday night losers Leicester still involved. In fact, following Newcastle's Saturday evening win at home to Sale, the bottom eight clubs are now separated by only 12 points.
But, after being forced into a late change when Tom Howe had to come in on the right wing to replace top try scorer Bryce Heem, whose wife had gone into labour, Worcester's afternoon initially got worse with an awful start.
In only the third minute, they lost recalled fly-half Jono Lance with a head injury. Then, in the fifth minute, a collapsing driving maul cost them a penalty try and a yellow card for Annett.
Young England flanker Hill's try, converted by Lance's replacement Duncan Weir, pulled Warriors level on 15 minutes, only for Morahan to go over in the right corner just four minutes later.
But Sheedy missed the kick, so when England centre Te'o went over on the right within five minutes, Weir's kick was to put Worcester in front for the first time at 14-12.
Two Sheedy penalties restored Bristol's lead at 18-14, but a great one-hand finish by returning Wales winger Adams in the left corner put Warriors back in front again - and it was a lead that this time they would not surrender.
Weir landed the conversion and a long-range penalty for a six-point half-time lead, extended to 27-18 when he added another early second-half penalty.
Sheedy's try, which he himself converted, put Bristol back in range at 27-25 and it looked like they would go on to win when Te'o's binning for a deliberate offside created a man advantage.
But the nearest they came in a dramatic finale was a long-range penalty from Ian Madigan which had the legs but drifted wide, forcing them to settle for just a losing bonus point.
Bristol head coach Pat Lam told BBC Radio Bristol:
"It's a game we've let slip away. We started well but through that first half defensively it was just way too easy.
"We had quite a few opportunities to win that game in the second half and we just couldn't get away from them.
"They are a dangerous side if you allow them to play and we did that in the first half.
"There were five points on offer, we got one, they got four and we missed out on four. That's the way we feel."
Warriors director of rugby Alan Solomons told BBC Hereford and Worcester:
"It was pretty much what I expected it to be. Both sides were tremendously committed and it was always going to be a very close game.
"The resilience and resolve we showed was tremendous.
"It was a complete team effort. Every guy gave absolutely everything that he had. It was unbelievable.
"The one thing I've learned about this competition is that it's not finished until the end of the season. There's a long way to go."
Bristol: Daniels; Morahan, O'Conor, Piutau (co-capt), Pincus; Sheedy, Randall; Woolmore, Parry, Thiede, Holmes, Vui, Luatua, Heenan, Crane (co-capt).
Replacements: Y Thomas for Woolmore (51), D. Thomas for Crane (51), Uren for Randall (58),Madigan for Sheedy (67).
Not Used: Parry, Afoa, Batley, Protheroe
Sin Bin: Annett (5), Weir (69). Ref: Luke Pearce (RFU).
Thacker, Thomas, Afoa, Batley, Thomas, Uren, Madigan, Protheroe.
Worcester: Pennell; Howe, Te'o, Mills (capt), Adams; Lance, Hougaard; Black, Annett, Schonert, Brelser, Fatialofa, Hill, Lewis, Mama.
Replacements: Weir for Lance (3), Waller for Black (55), Taufete'e for Annett (55), Milasinovich for Schonert (55), Phillips for Bresler (67).
Not Used: Kirwan, M Heaney, Butler.
Sin bin: Annett (5), Te'o (70).
Referee: Luke Pearce.
For the latest rugby union news follow @bbcrugbyunion on Twitter.