A last-gasp try from hooker Steve Thompson kept Northampton's Heineken Cup hopes alive and but sent Llanelli spinning out of the tournament.
HEINEKEN CUP Pool Three
Scarlets (14) 20:
Tries: G Thomas
Pens: Bowen 5
Northampton: (12) 22:
Pens: Grayson 5
In a game played in awful conditions, it was the kickers that dominated proceedings at Stradey Park.
Gareth Bowen kicked 15 points and Gavin Thomas crossed from close range to put the Scarlets 20-12 ahead.
But Paul Grayson's boot kept Saints in touch before skipper Thompson's late run sealed a famous win.
The opening exchanges were feisty and ferocious, hardly surprising for a game that had so much riding on it.
And with the rain pounding down, it was up to the forwards to take on the battle.
Northampton prop Chris Budgen went too far, though, and was sent to the sin bin after trampling on Simon Easterby.
Gareth Bowen slotted over the resulting penalty on six minutes but, despite being a man to the good, the home side could not take advantage.
Two penalties from veteran fly-half Grayson put Northampton 6-3 ahead.
The Scarlets responded well and scored the first try of the game when flanker Gavin Thomas peeled off a drive to cross from close range on 25 minutes.
The sides then traded penalties before a superb kick through by scrum-half Johnny Howard set up a Northampton attack which eventually led to an injury-time penalty.
The Scarlets, led impressively by scrum-half Dwayne Peel, came out firing after the break, Bowen slotting over again after Northampton were caught offside.
Saints, who lost the impressive Corne Krige at half-time, were able to repel wave after wave of attacks.
But they eventually infringed in another goalscoring position, Bowen adding to his tally with another penalty.
Saints threw everything at the Scarlets in a bid to rescue the game and were rewarded with another penalty on 64 minutes, Grayson kicking it to make the score 20-15.
As the teams tired in the muddy conditions, it was going to take something special to settle the contest.
And Thompson, popping up on the wing, was able to jink his way through a stretched defence.
Afterwards Thompson said the win shows his side have turned a corner after a dismal start to the league season.
"Everything is coming together," he said.
"The difference between us winning the sort of tight games we were losing at the start of the season is our work rate and self-belief.
"We didn't play much rugby all day. I don't know what it looked like, but it
felt like we were on the back foot the majority of the time, but we managed to
get the try at the end and won the game."
Llanelli Scarlets: G. Evans, Havili, Phillips, Finau, Selley, Bowen, Peel, I. Thomas, Rees, J. Davies, Cooper, Wyatt, Easterby, G. Thomas, D. Jones.
Replacements: John, Gravelle, A. Jones, Powell, Griffiths, Hawkins, A. Thomas.
Northampton: Reihana, Rudd, Cohen, Stcherbina, Human, Grayson,Howard, Budgen, Thompson, Morris, Seely, Lord, Blowers, Krige, Soden.
Replacements: Richmond, Sturgess, Browne, Fox, Jones, Drahm, Tucker.
Referee: Eric Darriere (France).