Worcester recorded their first Premiership win in almost two months as they beat Bath for only the second time in a tense match at Sixways.
Miles Benjamin went over to give the hosts a 10-0 lead at the break before Bath's ex-England skipper Lewis Moody was forced off with a shoulder injury.
The visitors then lost Dave Attwood to a serious neck injury before Joe Carlisle's second penalty for Warriors.
Charlie Beech reduced the deficit before Andy Goode added a drop-goal.
The win leaves Worcester nine points clear of basement club Newcastle and has moved Richard Hill's men above Leicester Tigers into 10th place.
Carlisle had given the hosts a slim 3-0 lead before Benjamin raced clear just before the break to give the hosts a decent advantage going into the second period.
Moody was off the field of play at the time after needing treatment for a blood injury following a clash with Warriors winger Marcel Garvey.
And the 33-year-old, England's under-fire Rugby World Cup captain, was forced off permanently after 49 minutes with a niggling shoulder problem.
Carlisle then added another three points before Bath's misery was compounded as England lock Attwood left the field with his neck in a brace following a lengthy stoppage midway through the second period.
Beech then scrambled the ball over for Bath to reduce the deficit before replacement Olly Barkley added the extras.
But a late drop-goal from Warriors replacement Goode secured the win for the hosts and denied Bath a losing bonus-point.
Bath boss Sir Ian McGeechan: "We didn't have a lot of ball in the first half and that is not the best way to build pressure.
"We didn't show the intensity of last Sunday (against Montpellier). We were pretty average and we have no excuses.
"Things have to be far better than they were tonight. We have to look hard at ourselves. We did not do ourselves justice."
Worcester head coach Richard Hill, on losing prop Matt Mullan (shoulder) and flanker Neil Best (suspected broken arm): "We have now only got two fit props, so it was a bit of a costly game for us.
"But to get the win will give everyone a big boost. We asked for our best performance of the season and I think we probably did that.
"We didn't look jittery. We went out with confidence, although we didn't get the rewards until just before half-time with Miles' try.
"We managed to close the game out, which was key. That was a big psychological thing for us - a massive step forward."
Worcester: Classens, Garvey, Grove, Rasmussen, Benjamin, Carlisle, Perry, Mullan, Shervington, Taumoepeau, C. Jones, Gillies, Best, Betty, Kvesic.
Replacements: Pennell for Classens (58), Goode for Rasmussen (65), Arr for Perry (40), Douglas for Mullan (50), Lutui for Shervington (68), Gulliver for C. Jones (68), Abbott for Best (69). Not Used: Currie.
Bath: Abendanon, Woodburn, Hipkiss, Vesty, Biggs, Donald, Claassens, Beech, Lilley, Perenise, Attwood, Caldwell, Louw, Moody, Taylor.
Replacements: Barkley for Vesty (54), Cuthbert for Biggs (58), McMillan for Claassens (65), Wilson for Perenise (50), Flatman for Attwood (65), Hooper for Caldwell (50), Mercer for Moody (37). Not Used: Tanner.
Ref: Martain Fox (RFU).