London Irish brought a seven-match Premiership losing streak to an end against a lacklustre Worcester.
Joe Ansbro bustled over and Tom Homer, who also kicked eight first-half points, profited from Jonathon Joseph's chip in a comfortable start for Irish.
Andy Goode landed two penalties for the hosts before the break.
Worcester made multiple changes and rallied with a Miles Benjamin try but Delon Armitage hit back before Marcel Garvey's late consolation score.
VIEWS FROM THE DRESSING ROOM
Worcester head coach Richard Hill:
"We were dire in the first half.
"Shaun Perry made a considerable difference coming on at half-time as he helped with his leadership and energy and we restored a little bit of pride in the second half."
"I don't know why we were so lacklustre, maybe it was that result [Newcastle losing to Saracens on Friday - thus securing Worcester from the threat of relegation], but it was a very disappointing performance."
London Irish coach Toby Booth:
"I'm delighted for the players. The road has been too long with so many defeats.
"We adapted well to the conditions, we controlled the game and didn't let them get going."
"(This season) has been very frustrating, we have lost around seven games in the last five minutes.
"Today it was a conscious decision to pick 14 players who will be with us next season as we've got to fast track them into getting Premiership experience."
Worcester: Pennell; Garvey, Grove, Rasmussen, Benjamin; Goode, Arr; Mullan, Shervington, Taumoepeau; Percival, Gillies; Betty, Abbott, Horstmann.
Replacements: Fatiaki for Grove (55), Gulliver for Rasmussen (58), Gray for Goode (40), Perry for Arr (40), Porter for Mullan (55), Lutui for Shervington (55), Douglas for Taumoepeau (40), Kvesic for Abbott (23).
London Irish: Homer; D Armitage, Joseph, Ansbro, Tagicakibau; Shingler, Allinson; Lahiff, Paice, Halavatau; Evans, Garvey; Sisi, Gibson, Treviranus.
Replacements: Samson for Allinson (68), George for Lahiff (74), Buckland for Paice (63), Ion for Halavatau (63), Low for Sisi (68), Gray for Treviranus (63).
Ref: Tim Wigglesworth (RFU).