Bath secured their first win in two months but made hard work of it before finally seeing off Worcester 30-13 at the Rec.
The home side dominated possession and territory against opponents who were overpowered up front but they had to wait until Elliott Stooke's 77th-minute to put the result beyond doubt.
Stooke's score came after earlier tries by right wing Semesa Rokoduguni and flanker Tom Ellis, with fly-half Freddie Burns converting all three as well as kicking three penalties.
Worcester's points came from a superbly-worked try by centre Ryan Mills midway through the first half, with Duncan Weir's boot adding the rest.
The Warriors came into the game level on points with Bath but with a points difference margin of +63, which Weir soon improved with a fifth-minute penalty.
Burns quickly responded in kind from short range as the Bath front five set about imposing themselves at close quarters.
A succession of catch-and-drives from a reassuringly efficient home line-out built momentum before Rokoduguni came infield on Jamie Roberts' pass to take two defenders over the line for the game's first try after 19 minutes.
Burns converted for a 10-3 lead but Worcester struck back with a flowing try straight from a scrum, exploiting a recurring weakness in the Bath defence.
They were all too easily opened up by Chris Pennell's offload to Francois Venter and his centre partner Mills cut through on the right to touch down.
Weir converted but a rising penalty count knocked back the visitors again as Burns quickly replied with a 28th-minute kick from 35 metres.
For all Bath's possession and territory, Worcester were doing an effective job of slowing down their ball at the breakdown.
So the only further points in the first half came again from Burns' boot, courtesy of a penalty conceded at a scrum, and Bath led 16-10 at the break.
Francois Hougaard bumped Ellis into touch just short of the line soon after the restart but the Bath man was not denied for long.
Although Worcester won the line-out, the South African scrum-half's kick was charged down, appropriately enough, by the jubilant Ellis.
Although 23-10 adrift Worcester still looked the far more dangerous side with ball in hand.
However, their line-out continued to be liability and Bath replacement forward Levi Douglas was able to steal a throw with his first touch.
But the home team were also conceding penalties and Weir pulled back three points from 40 metres to make it 23-13 with still almost half-an-hour to go.
Bath's forward dominance was hardly checked by the arrival of further replacements and the pick-and-drive was still the tactic of choice, but without yielding any tries until the ball was finally worked wide and Stooke took a short pass to thunder over late on.
ga('create', 'UA-72310761-1', 'auto', {'name': 'pacontentapi'});
ga('pacontentapi.set', 'referrer', location.origin);
ga('pacontentapi.set', 'dimension1', 'By Press Association Sport staff');
ga('pacontentapi.set', 'dimension2', '53a77821-4d35-49f9-88ce-eee8ca8371df');
ga('pacontentapi.set', 'dimension3', 'paservice:sport,paservice:sport:uk');
ga('pacontentapi.set', 'dimension6', 'story');
ga('pacontentapi.set', 'dimension7', 'composite');
ga('pacontentapi.set', 'dimension8', null);
ga('pacontentapi.set', 'dimension9', 'sport:rugby-union');
ga('pacontentapi.send', 'pageview', { 'location': location.href, 'page': (location.pathname + location.search + location.hash), 'title': 'Bath edge out Worcester to return to winning ways'});