But tries from Rhys Lawrence and Callum Braley brought the visitors back into the game.
Jon Clarke extended Cavaliers lead before Braley again reduced the deficit to set up a tense finale.
Steve Uren scored a late try to leave Bristol just four points shy of Cavaliers but the hosts held on to secure the win.
The early exchanges saw both sides play in rather conservative fashion, with much of the action in the middle of the park.
Cavaliers had the best of the early exchanges though, as captain Ben Howard and Max Stelling made inroads in the United defence.
Fly-half Danny Gray picked up an early knock to his ear which paved the way for Elliott Davies to come on.
Bristol looked dangerous on the counter-attack but a knock-on ended their hopes of scoring and Cavaliers responded with a spell of possession.
A neat move saw slick passing between the backs and Josh Drauniniu was brought down several metres short of the tryline.
After continued pressure, the Cavaliers forward pack drove over the whitewash with hooker Seymour emerging to celebrate his first try at Sixways.
Davies couldn't slot the conversion and Gray soon returned to the field after being patched up.
Cavaliers surged forward again and De Cothi added a second crashing down underneath the posts.
The scrum-half was constantly posing a threat to the Bristol defence, twisting and turning his way through and regularly gaining yards.
Cavaliers added a third try when Walker-Blair touched down on the right before Stelling and Drauniniu combined in another piercing move as they searched for a fourth before the break.
Bristol clawed their way back into the game with a try late in the first-half from hooker Lawrence.
Richard Grieve and Braley then exchanged passes to race down the right flank but a flying tackle from Walker-Blair denied the scrum-half a second Bristol try, and the score remained 17-5 to Cavaliers.
After the break, play switched from end-to-end with individual mistakes allowing both sides to gain plenty of yards but neither could fully capitalise.
Despite Braley being denied in the first-half, the number nine then had the simple task of touching down unchallenged in the second period, after a spell of pressure from the Bristol pack.
Davies had an opportunity to extend Cavaliers lead with a penalty but his relatively straightforward kick was dragged wide.
Bristol then latched on to a loose ball and almost had their third try of the evening but Drauniniu was quick out of the blocks to beat his opponent and sniff out the danger.
And Cavaliers soon eased their nerves when Clarke powered through the Bristol backline to touch down beneath the sticks with Davies adding the extras.
Stelling was as strong and fast as ever, making countless breaks in the Bristol defence as Cavaliers looked to see out the game.
But lock Shay Kerry was sin-binned for the final ten minutes as Bristol hunted down Cavaliers' lead.
United put together some fantastic passages of play and were rewarded when Uren crashed over to reduce Worcester's lead to just four points, but they couldn't find another score as Cavaliers held on for victory.
16m: Seymour try 5-0
19m: De Cothi try 10-0
20m: Gray con 12-0
29m: Walker-Blair try 17-0
38m: Lawrence try 17-5
51m: Braley try 17-10
58m: Clarke try 22-10
59m: Davies con 24-10
68m: Braley try 24-15
77m: Uren try 24-20
Cavaliers: 01 Paul Andrew (Cosgrove 40) (Andrew 75), 02 Nick Seymour (Young 63), 03 John Andress (Porter 49), 04 Shay Kerry, 05 Harry Casson, 06 Charlie Walker-Blair (Smith 59), 07 Andrew Boyce, 08 Cam Goodhue (Taylor 53), 09 George de Cothi (Williams 68), 10 Danny Gray (Davies 8) (Gray 18) (Davies 42), 11 Tom Chapman, 12 Jon Clarke , 13 Max Stelling, 14 Josh Drauniniu, 15 Ben Howard
Replacements:16 Callum Young, 17 Jack Cosgrove, 18 George Porter, 19 Sam Smith, 20 Huw Taylor, 21 Elliott Davies, 22 Ben Williams, 23 Ashley Elvers