Munster took control of Heineken Cup Pool One with their 13th straight win over the Scarlets in all competitions.
Aaron Shingler's opportunist try and a Rhys Priestland penalty gave the Welsh an early lead.
But Munster led 11-8 at the break thanks to the boot of Ronan O'Gara and a fine counter-attack that sent flanker Niall Ronan away to the try line.
Two more O'Gara penalties after the break kept Munster ahead despite kicks from Priestland and Stephen Jones.
The Scarlets' preparations had been disrupted by the withdrawal of wing George North, who failed a late fitness test on the dead leg he suffered in Wales' loss to Australia last week.
That saw Liam Williams move to the 14 shirt, with Dan Newton replacing him in at full-back.
The Welsh region took an early lead when Munster centre Will Chambers' hands let him down and the Scarlets poured forward on the loose ball.
Jon Davies showed nimble feet to get a boot on the ball before it went into touch and flanker Shingler was on hand to gather and plunge over.
Rhys Priestland had already missed a penalty and hit the post with the attempted conversion, but found his range soon after to add a penalty.
Munster had been uncharacteristically subdued in the opening exchanges, with the Scarlets back-row also showing up well to disrupt their visitors.
But O'Gara got Munster moving forward with a chip through the middle for Simon Zebo, in off his wing, to chase, gather and then punt upfield.
Priestland did well to get back but was forced to concede a five-metre scrum, which saw the Scarlets front-row buckle and allow O'Gara to dissect the posts.
The Munster fly-half was again involved as he set Denis Hurley away on the counter after a loose clearance from Newton.
Full-back Hurley committed two tacklers but was able to get the pass away out of the back of his hand to Johne Murphy, who sent the rampaging Ronan away for a try.
O'Gara missed the conversion but made no mistake with a penalty to give Munster an 11-8 lead at half-time.
Priestland kicked Scarlets level after Sean Lamont had charged through the Munster midfield, skittling O'Gara out of the way and drawing the penalty as the Irish defence scrambled back.
O'Gara restored Munster's three-point advantage after a burst from Lifeimi Mafi had taken them into the Scarlets 22.
Priestland missed a more difficult chance soon after and that saw fellow Wales half-backs Stephen Jones and Tavis Knoyle summoned off the bench.
Knoyle replaced Gareth Davies at scrum-half but it was Newton who made way for Jones, with Priestland dropping to full-back.
The match was paused briefly when referee Romain Poite was hurt after being sandwiched between heavyweights James Coughlan and Sione Timani - much to the crowd's amusement.
The Frenchman picked himself up to carry on and one of his next acts was to penalise the Scarlets scrum, allowing O'Gara to nudge Munster into a six-point lead.
Jones took over place-kicking duties for the Scarlets and in increasingly heavy rain smacked over a kick from 40 yards to make it a three-point game entering the final 10 minutes.
A sustained period of Scarlets pressure ended when Jones spilled the ball in the Munster 22, with Knoyle having twice not spotted Lamont in space on the left wing during the phases.
Guided by O'Gara's boot, Munster pinned their hosts back in typical fashion to run down the last few minutes and take a two-point lead over the Scarlets at the top of Pool One.
The Scarlets now face the daunting task of going to Thomond Park next week and find their first win against the Irish powerhouses since 2007.
Munster captain Paul Connell: "It was a really hard-fought win. We started really poorly and when you start like that against a team like the Scarlets, with the calibre of player they have, you get punished and that's what happened.
"They scored an early try and a penalty and we were probably lucky they missed two kicks at goal, but we settled down then.
"It's a hell of a win for us and we are absolutely thrilled with it, but we are fully aware it's only half-time.
"From our point of view there is nothing like a loss to focus the mind so I'd imagine next week will be an incredibly tough game."
Scarlets head coach Nigel Davies: "We weren't accurate enough and we had a couple of chances in the first 20 minutes we weren't sharp enough at taking.
"We were very confident but we weren't accurate enough. This match was of Test-level intensity and you can't afford errors but there were too many in our game.
"But we have always seen this as a two-match series and we have to go out there and get something from the game.
"It's a tough place to go but we will go there all guns blazing as we did against Northampton. We have got the team to beat them."
Scarlets: Dan Newton; Liam Williams; Scott Williams, Jon Davies, Sean Lamont; Rhys Priestland, Gareth Davies; Iestyn Thomas, Matthew Rees (capt), Rhys Thomas, Sione Timani, Damian Welch, Aaron Shingler, Rob McCusker, Ben Morgan.
Replacements: Ken Owens for Rees (63), Phil John for I. Thomas (63), Deacon Manu for R. Thomas (75), Kieran Murphy for McCusker (63), Jonathan Edwards for Shingler (46), Tavis Knoyle for G. Davies (58), Stephen Jones for Newton (58), Viliame Iongi L. Williams (76).
Munster: Denis Hurley; Johne Murphy, Will Chambers, Lifeimi Mafi, Simon Zebo; Ronan O'Gara, Conor Murray; Wian du Preez, Damien Varley, BJ Botha, Donnacha Ryan, Paul O'Connell, Peter O'Mahony, Niall Ronan, James Coughlan.
Replacements: Denis Fogarty, Marcus Horan for Du Preez (75), John Hayes for Botha (76), Donncha O'Callaghan for D. Ryan (56), Denis Leamy for O'Mahony (41), Tomas O'Leary for Murray (63), Ian Keatley, Danny Barnes for Chambers (56).
Referee: Romain Poite (FRF)