The Saints took the spoilsbut the Warriors can feel hard done by after being denied a last-gasp try.
The crowd rose to their feet to acclaim the winning score only to see it called back for a forward pass.
Worcester made the better start and it was only the saving tackles of scrum-half Mark Robinson and full-back Bruce Reihana which denied winger Aisea Havili the opening try of the match.
The home side had their noses in front for most of the half at 3-0 as fly-half James Brown booted a 40-yard penalty from his second attempt of the match.
Northampton finally woke up and New Zealand star Carlos Spencer and his half-back partner Robinson were instrumental in getting the Saints’ rolling, Reihana denied a try on Northampton’s first real attack of the match by the home cover.
All they could show for a five-minute bout of pressure was an equalising penalty from Reihana when Worcester were penalised for coming from the wrong side of a ruck.
That seemed to be the kick-start Worcester needed as they piled into the opposition and it almost paid off when Havili rounded replacement Ben Cohen, but his chip ahead was covered by the livewire Robinson.
Things did not get much better after the interval as the game degenerated into a war of attrition.
Reihana missed a penalty to put Northampton ahead but the visitors finally found a gap in Worcester’s defence to grab the opening try.
Reihana drew the defence on the left and England hooker Steve Thompson went through a big gap and rumbled over from five yards.
Worcester clawed their way back as replacement Shane Drahm hammered over a 42-yard penalty but Spencer then kicked for Cohen to leap above Havili and touch down for the try.
Worcester refused to buckle and Drahm eventually put flanker Kai Horstmann in at the corner. Drahm missed the conversion however to leave his side four points adrift.
The home crowd thought their prayers had been answered when Havili was sent flying down the right wing from 25 metres after a long pass from Drahm, only for the referee to call it back for a contentious forward pass.