There was no Christmas cheer for Warriors as they suffered their first home defeat in six home matches in all competitions at Sixways on Friday.
Two second half interception tries from Cobus Reinach and Luther Burrell helped Northampton leapfrog Warriors in the Gallagher Premiership table with fly-half Dan Biggar kicking six penalties in a personal haul of 20 points.
Reinach’s try proved to be the decisive one as it came just as Warriors were feeling their way back into the match after a sluggish start.
Warriors points came from two penalties from Duncan Weir but they were also undone by handling errors and a wonky lineout against eager opponents.
Warriors struggled to build any momentum in the first half and when they conceded penalties under pressure Biggar was quick to apply the punishment.
The Wales fly-half struck first after nine minutes and again after 16 and 21 minutes while Weir was off-target in between, the first time he had failed to find the target with a penalty attempt in the Premiership this season.
Weir pegged back three points on 26 minutes when Warriors went through the phases and forced Northampton to concede under pressure.
But Biggar soon cancelled out that score with his fourth penalty after Northampton went through the phases and Warriors were penalised for an early tackle.
Weir had an opportunity to cut the deficit on the stroke of half-time but his long range penalty attempt drifted wide.
Weir made amends four minutes into the second half with a well-struck penalty after Northampton were penalised at the breakdown and again for dissent which brought the penalty within range for the Scotland international.
The penalty lifted Warriors and they enjoyed their best period of the match with a diagonal run from Bryce Heem opening up the Saints defence.
Heem was hauled down just short of the line and Warriors won a penalty which they kicked to touch. They picked and drove to the line and a try seemed certain.
But when the try came it was at the other end as Reinach intercepted and went the length for a try that knocked the stuffing out of Warriors.
Piers Francis took over the kicking duties while Biggar was off the field having treatment but Biggar resumed when he returned and added two more penalties in the last ten minutes which put the game beyond Warriors.
There was time for Burrell to score another interception try from deep in his own half which Biggar improved to seal the win.
Warriors | 15 Chris Pennell, 14 Bryce Heem, 13 Francois Venter, 12 Ryan Mills (Lawrence 66), 11 Josh Adams (van Breda 78), 10 Duncan Weir, 9 Francois Hougaard (Arr 78), 1 Callum Black (Waller 62), 2 Jack Singleton (Taufete’e 66), 3 Nick Schonert (Milasinovich), 4 Anton Bresler, 5 Michael Fatialofa (Phillips 64), 6 Marco Mama (Hill 49), 7 Sam Lewis, 8 GJ van Velze (C).
Replacements | 16 Joe Taufete’e, 17 Ethan Waller, 18 Gareth Milasinovich, 19 Pierce Phillips, 20 Ted Hill, 21 Jonny Arr, 22 Ollie Lawrence, 23 Scott van Breda.
9m | Biggar pen 0-3
16m | Biggar pen 0-6
21m | Biggar pen 0-9
26m | Weir pen 3-9
34m | Biggar pen 3-12
44m | Weir pen 6-12
58m | Reinach try 6-17
59m | Francis con 6-19
70m | Biggar pen 6-22
76m | Biggar pen 6-25
77m | Burrell try 6-30
78m | Biggar con 6-32