Adam Warren's late try for the home side settled a scrappy Pro12 encounter at a rain-lashed Parc y Scarlets.
Scarlets led 13-3 at the break after Liam Williams crossed in first-half stoppage time, Aled Thomas adding the conversion to his earlier penalty.
Ian Humphreys added a third penalty before Andrew Trimble's try brought Ulster back to within two points.
But Scarlets went clear when Warren crossed on 73 minutes before Dan Newton and Humphreys landed a penalty apiece.
Humphreys' effort two minutes from time ensured Ulster returned home with a losing bonus point.
The visitors were forced into a late change when tight-head prop Declan Fitzpatrick pulled out just before kick-off through injury.
Tom Court switched from loose-head and Paddy McAllister came off the bench to fill in at loose-head.
But Ulster were boosted by the return of six of their World Cup players - Johann Muller, Ruan Pienaar, Trimble, Court, Paddy Wallace and Simon Danielli.
Scarlets included three of their World Cup contingent - Ken Owens, Tavis Knoyle, Scott Williams - though only Owens started. Matthew Rees, who missed the tournament with a neck injury, was also named on the bench.
Humphreys slotted an early penalty for Ulster, before Thomas replied after missing his first attempt at the posts.
Both sides struggled to deal with the slippery conditions, but Scarlets gradually got the upper hand. Thomas landed a second penalty and then Williams struck for an opportunist try when in ran in unopposed from the 22.
Just six minutes into the second half, Scarlets brought on Rees for his first appearance of the season, with Knoyle also introduced at scrum-half.
But it was Ulster who got the first score of the half on 50 minutes. Humphreys had missed a long-range effort before putting over his second penalty from inside the 22.
Scarlets, who were more creative in attack, got a penalty back through Thomas, but that was soon cancelled out by Humphreys' third from in front of the posts.
The visitors were right back in contention when Trimble scored in the right corner after Johnathan Edwards hesitated as he waited for the ball to go dead.
But in what was the home side's only attack of note after the break, centre Warren waved his way over, followed by Newton's penalty.
Two minutes later Humphreys ensured Ulster claimed a losing bonus point with his fourth penalty.
Scarlets: Daniel Evans; Liam Williams, Sean Lamont, Adam Warren, Andy Fenby; Aled Thomas, Rhodri Williams; Rhodri Jones, Ken Owens, Rhys Thomas, Dominic Day, Damian Welch, Rob McCusker (capt), Johnathan Edwards, Ben Morgan.
Replacements: Matthew Rees, Phil John, Simon Gardiner, Aaron Shingler, Richie Pugh, Tavis Knoyle, Daniel Newton, Scott Williams.
Ulster: S Danielli; A Trimble, N Spence, P Wallace, C Gilroy; I Humphreys, R Pienaar; P McAllister, A Kyriacou, T Court; J Muller (capt), D Tuohy; P Wanneburg, M McComish, C Henry.
Replacements: N Brady, P Karayiannis, A Macklin, L Stevenson, R Diack, P Marshall, D Cave, A D'Arcy.
Referee: Alan Falzone (FIR)