|Worcester (21) 31|
|Tries: Kirwan, Hougaard, Pennell Cons: Heathcote 2 Pens: Heathcote 4|
|Sale (8) 23|
|Tries: Haley 2, Seymour, Taylor Pen: Cipriani|
|Relive Saturday's Premiership action|
Worcester ended their 13-game winless run with an impressive performance over form side Sale Sharks at Sixways.
Tries from flanker Carl Kirwan and debutant scrum-half Francois Hougaard gave the hosts a 21-8 half-time lead, with Dave Seymour crossing for Sharks.
After Tommy Taylor scored to give Sale some hope, Chris Pennell's smart try extended Warriors' lead.
The Sharks secured a try bonus point after Mike Haley crossed twice but Worcester were always well ahead.
Worcester's third Premiership win of the season moves Dean Ryan's side up to 10th before Newcastle play on Sunday.
Scotland fly-half Tom Heathcote was in excellent form from the tee, slotting six of his seven kicks for Worcester, while Sale number 10 Danny Cipriani, who earlier this week announced that he will return to Wasps next season, was successful with one from five.
Those misses cost his side a losing bonus point as their unbeaten record in 2016 was ended, leaving them seventh in the league.
Sharks number eight Josh Beaumont, who has been with Eddie Jones' England squad during the Six Nations, was forced off with an potential shoulder dislocation late on.
Worcester director of rugby Dean Ryan:
"He only arrived on Monday but Francois Hougaard was outstanding. He's a class player. His confidence spread through the team.
"Apart from the London Irish game, our performances haven't been an issue, but we just needed a bit of self-belief to get over the line.
"We're delighted to beat the form team in the Premiership. We've put ourselves in a bit of a fight as we missed three or four chances earlier in the season."
Sale director of rugby Steve Diamond:
"They've been complaining about referees in the press all week. Dean Ryan has been fantastic in his management of the situation.
"We're the most disciplined team in the league but the referee gave seven penalties against them for bringing down driving mauls, but there were no yellow cards given.
"In the first half, we weren't at the races. They were hungrier than us, we didn't match it and made two or three defensive errors. In the second half, we were much better and I'm disappointed that we didn't go away with two bonus points."
Warriors: Pennell; Heem, Olivier, Mills, Vuna; Heathcote, Hougaard; Rapava Ruskin, Bregvadze, Schonert, O'Callaghan, Barry, Potgieter, Kirwan, van Velze (capt).
Replacements: Symons, Lamb, Baldwin, Dowson, Sanderson, Johnston, Leleimalefaga, Annett.
Sale: Haley; Arscott, James, Tuitupou, Edwards; Cipriani, Stringer; Lewis-Roberts, Taylor, Cobilas, Mills, Evans, Neild, Seymour, Beaumont (capt).
Replacements: Briggs, Harrison, Mujati, Lund, Easter, Cusiter, Ford, Jennings.
Referee: Greg Garner (RFU)
For the latest rugby union news follow @bbcrugbyunion on Twitter.