Jim Mallinder's Northampton crashed to their second successive Heineken Cup defeat as the Scarlets ran in four tries to make it two wins from two.
The Scarlets were in charge by half-time after tries from Liam Williams, Aaron Shingler and Matt Gilbert.
Ryan Priestland scored their bonus try before a late rally by the Saints.
Mallinder has been but his side are already on the brink of Heineken Cup elimination.
Scarlets capitalised on an error-strewn performance by Saints to move clear at the top of Pool One, although Mallinder's men did manage a losing bonus point with tries from George Pisi and Tom Wood, while Ryan Lamb kicked 13 points.
Northampton suffered a setback before kick-off when Ben Foden was deemed unfit because of his rib injury.
And they were trailing in the third minute when Gareth Davies's offload went to ground before Williams kicked the loose ball on, then dived on it.
Lamb converted a penalty, but the Scarlets hit back in controversial fashion immediately from the kick-off when referee Peter Fitzgibbon failed to spot an apparent knock-on from Sean Lamont.
Scotland wing Lamont deflected the ball forward as he challenged Courtney Lawes for the restart and, as Northampton stopped playing, Shingler scooped up the loose ball to score.
Lamb steadied the ship with two more penalties but Jonathan Davies set up Gilbert, who twisted his way over for Scarlets' third try before the break.
The Scarlets were reduced to 14 men when Jonathan Edwards was sin-binned for killing the ball at the ruck.
Despite that, they went even further ahead when Priestland toed the ball forward before grounding.
The Scarlets made a raft of changes in the closing stages and their intensity dropped, which allowed Northampton to secure their second successive losing bonus point.
Pisi scored in the left corner before Wood galloped over for a breakaway try in the final minute.
Saints director of rugby Jim Mallinder told BBC Radio Northampton:
"We didn't play very well. We couldn't look after the ball. A few things didn't go our way and Scarlets had a very good kicking game, defended well and put us under pressure.
"It was disappointing that we lost Ben Foden before kick-off. He's a world class full-back and, if you lose any player like that, it'll affect your team. Even so, there's no good reason why we should have had heads down and play like we did.
"Rob Andrew hasn't contacted me. I'm here at Northampton and happily contracted. It's a case of cracking on and doing the best I can for Saints."
Scarlets coach Nigel Davies: "We had to play a very good game of rugby to get a result here and that is what we did.
"This is pretty big against a side of Northampton's quality. I don't think they have lost a European encounter at home since 2007 so it is a big scalp for us.
"We have to build the momentum. The big thing has been belief, believing we can come to places like this."
Northampton: Pisi; Ashton, Clarke, Downey, Artemyev; Lamb, Dickson; Tonga'uiha, Hartley, Mujati, Lawes, Sorenson, Clark, Wood, Wilson.
Replacements: Dowson for Clark (54), Manoa for Sorenson (64), Roberts for Dickson (64), Armstrong for Pisi (71), A Waller for Tonga'uiha (71), Haywood for Hartley (71), Doran-Jones for Mujati (71).
Not Used: Myler.
Scarlets: L Williams; North, S Williams, J Davies, Lamont; Priestland, G Davies; I Thomas, M Rees, R Thomas, Timani, Welch, Shingler, J Edwards, Morgan.
Replacements: Gilbert for Shingler (30), Reed for Timani (64), Owens for M Rees (64), John for I Thomas (65), R Jones for R Thomas (71), R Williams for G Davies (74), Evans for North (77).
Not Used: S Jones.
Sin Bin: J Edwards (60).
Referee: Peter Fitzgibbon (Ireland).