Play-off contenders Saracens reduced the arrears through Dan Scarbrough, but Dale Rasmussen's second-half score eased the tension at Sixways.
Northampton's 27-22 victory over London Irish became academic with Worcester's triumph.
Needing a win and a Warriors defeat, the Saints ran in tries from Bruce Reihana, Sean Lamont and Mark Robinson, with Reihana kicking five goals.
The Exiles staged a stirring second-half comeback with a try from Seilala Mapusua and although the hosts held on, it was not enough to stay up.
Gloucester ran in four tries to win their west country derby clash 35-13 against Bristol and finish at the top of the table while Bristol, who led the standings until mid February, had to make do with third spot.
The Cherry and Whites will host Saracens in their semi-final while Bristol, who many predicted at the start of the season would be relegated, will face Premiership runners-up Leicester at Welford Road, where they lost 43-15 to the Tigers just before Christmas.
Willie Walker, Mark Foster, Jake Boer and Andy Hazel crossed for Gloucester with David Lemi and Brian Lima replying for Bristol.
Leicester grabbed four tries and fly-half Andy Goode marked his 100th Tigers appearance in the Premiership with an 18-point haul as they beat Wasps 40-26.
Alesana Tuilagi, Danny Hipkiss and Lewis Moody crossed for Leicester, who were also awarded a penalty try as they dealt a psychological blow in the countdown to the Heineken Cup final between the sides on May 20.
James Haskell, Ayoola Erinle and Mark McMillan replied with tries for Wasps.
Andrew Mehrtens ended his Harlequins career in style as the Londoners romped to a 49-0 victory against under-strength Sale.
The former All-Blacks fly-half, playing his final match for the club on his 34th birthday, turned in a virtuoso performance at Twickenham Stoop.
Showing no signs of the knee and hamstring problem which have limited him to only nine appearances in his last season, he finished with 24 points.
Mehrtens contributed a full house of scores, with a try, five conversions, two long-range penalties and a drop goal.
Peter Short, David Bory and Shaun Berne scored the tries as Bath ended the season with a 20-12 win at Newcastle, for whom Mathew Tait and Andy Buist crossed.