A late try from winger Mark Foster sent Gloucester into the final of the European Challenge Cup.
Gloucester: (15) 31
Tries: Simpson-Daniel, Allen, Foster
Pens: Lamb 3
Cons: Lamb 2
Worcester: (17) 23
Tries: Drahm, Sanderson
Cons: Drahm 2
Pens: Drahm 2
Drop goals: Drahm
The hosts surged into an early lead through tries from James Simpson-Daniel and Anthony Allen.
But Worcester hit back with tries from Shane Drahm and Pat Sanderson to lead 17-15 at the break.
Drahm kicked Worcester further ahead, but penalties from Ryan Lamb and Ludovic Mercier cut the gap before Foster's try sealed a home win.
Lamb and Drahm, England Under-21 and England A fly-halves respectively, exchanged early penalties before Lamb sparked a searing attack which finished with Simpson-Daniel crossing out wide.
Lamb pulled the conversion wide, but he was on target soon after as England Under-21 centre Allen finished off a sweeping counter-attack.
Drahm converted his own try to trim the gap to 15-10 after half an hour.
And he was on target again in first-half injury time when Worcester captain Sanderson finished off another fine attack to put his side into a two-point lead.
Worcester fly-half Drahm landed a drop goal and a penalty soon after the break to extend lead to eight points.
But Lamb and Mercier trimmed the gap with a penalty apiece before the hosts re-took the lead after 73 minutes when Foster latched onto a cross-kick and crossed out wide.
Lamb slotted the conversion from the touchline and added a late penalty to ensure Gloucester reached the final, where they will face either Newcastle or London Irish.
Gloucester boss Dean Ryan:
"I feel it's a little short-sighted by the invisible people who make these decisions to hold the final at the Twickenham Stoop.
"I think it's wrong to decide to have it there and 12 ,500 is not enough for our support.
"I thought Worcester looked on top of their game and we spent the middle part struggling to get into the game.
"Overall, in the whole game, I thought we deserved it. They have got a great set-piece but I thought (lock) Alex Brown was tremendous in the lines today.
"They thought we would be pressured in the scrum where we were last week but we have shown we have an exciting group of people who want to play."
Worcester boss John Brain:
"I felt we played a lot better today than we did in last week's 27-16 defeat by Gloucester.
"You can take losing when we perform reasonably well.
"We got ourselves into a winning position but we were not positive enough. Really, they crept back into it.
"The players are obviously gutted because they gave their everything and just didn't do enough to win. But I think, as a team, we are developing reasonably well."
Gloucester: Morgan; Simpson-Daniel, Foster, Tindall, Allen; Lamb, Richards; Collazo, M Davies, Powell; Eustace, Brown; Buxton, Hazell, Forrester.
Replacements: Elloway, Forster, Pendlebury, Narraway, Thomas, Mercier, Bailey.
Worcester: Le Roux; Oduza, Rasmussen, Lombard, Trueman; Drahm, Powell; Windo, C Fortey, Tuamoepeau; Murphy, Gillies; Sanderson, Harding, Horstmann.
Replacements: L. Fortey, McDonald, O'Donoghue, Vaili, Runciman, Brown, Whatling.
Referee: C Berdos (France)