On a bitterly cold evening that was almost called off due to the weather, both sides scored two tries apiece with Thinus Delport and Aisea Havili scoring for Worcester, and Joe El Abd and David Lemi canceling them out.
However Shane Drahm was the difference as he landed four penalties against Bristol.
Bristol started well and were unlucky not to open the scoring when the impressive David Lemi bundled in to touch by Thinus Delport in the sixth minute.
Bristol were reduced to 14 men when Brian Lima was sent to the sin-bin for killing the ball but the visitors managed to hold of a strong Worcester attack.
Worcester finally got the fans stamping their feet for something other than the cold when fullback Nicolas Le Roux drew the Bristol defence before passing to Delport to race to the line.
A penalty from Jason Strange got Bristol off the mark but he failed with another attempt, giving the hosts a 7-3 lead at the break.
Drahm extended Worcester’s lead early in the second half with penalty from in front of the posts., and Bristol were once again reduced to 14 men when centre Sam Cox yellow-carded for stamping on Gomarsall’s head.
The Warriors took immediate advantage of the extra man with Aisea Havili scoring in the corner.
Drahm failed to convert from the touchline but kicked one penalty and then saw the next go across the face of the posts.
Bristol reduced the deficit through a well-worked try from openside flanker Joe El Abd which Strange converted.
Drahm added a third penalty but Bristol refused to give in and Lima, who had moved to the centre, sent Lemi in for their second try.
But Strange’s conversion attempt hit the near upright and bounced back in to play and Drahm added a fourth penalty to deny Bristol a bonus point.