|Ospreys (17) 17|
|Tries: Natoga, Lydiate Cons: Biggar 2 Pen: Biggar|
|Scarlets (9) 15|
|Pens: Priestland, Shingler 4|
Ospreys returned to the top of the Pro12 table but were pushed all the way by Scarlets in a fierce Welsh derby.
The home side led 17-9 at half-time thanks to tries from Aisea Natoga and Dan Lydiate, making his first start since joining from Racing Metro.
Replacement Scarlets fly-half Steve Shingler, who kicked all four of his penalties, chipped away at the lead.
Ospreys just managed to hang on but Scarlets will be seeking revenge when the two sides meet again next weekend.
Scarlets had only won once before at the Liberty Stadium, in September 2007, and had not beaten their west Wales rivals since a 22-12 success at Parc y Scarlets on Boxing Day 2011.
Also counting against Wayne Pivac's side was the fact that they were coming into the match on the back of a while Ospreys had enjoyed a morale-boosting 31-20 win against Ulster.
Scarlets were impressive in the scrum but were ultimately undone by an Ospreys side that held the upper hand in key positions on the pitch.
Wales half-backs Rhys Webb and Dan Biggar gave Ospreys the edge in territory and control, while full-back Dan Evans made big gains when given the chance to counter-attack.
Rhys Priestland had given Scarlets an early lead with a penalty when Ospreys prop Dmitri Arhip was penalised at a collapsed scrum.
But the visitors suffered a blow soon after when wing Kristian Phillips was sin-binned for a dangerous late tackle on Evans.
That allowed Ospreys to drive deep into Scarlets territory and earn a kickable penalty that Biggar converted to level the scores.
A typically attritional Welsh derby took its toll on both sides in a cold and wet first quarter.
Ospreys scrum-half Webb departed to the blood-bin before returning later with stitches in a cut eyelid, and Natoga came onto the wing for Eli Walker.
Scarlets, meanwhile, had to make two changes as Steffan Hughes came on for wing Harry Robinson, while Priestland's back problem saw him replaced by Steve Shingler at fly-half.
Shingler proved an able deputy by restoring Scarlets' slim advantage with his first penalty attempt and impressing with his all-round play.
Ospreys almost took the lead when Justin Tipuric charged down Liam Williams' kick and Tyler Ardron gathered to slide under the posts, but Williams remedied his mistake to get back and prevent the number eight from grounding the ball.
It was a brief reprieve as Hanno Dirksen scooped up a loose ball and although he was dragged down just short, fed fellow wing Natoga to go over the line.
A second home try followed as Webb's clever kick forced Phillips to concede a line-out near his own line, allowing Ospreys to maul Lydiate over.
Biggar converted both tries to give Ospreys a healthy lead, although Shingler was able to reduce the deficit to 17-9 with a penalty before half-time.
After Biggar had missed a long-range penalty soon after the restart, Scarlets enjoyed their best period of the game as they attacked through the scrum and used their possession far better.
That allowed Shingler to kick two more penalties to bring the visitors to within two points and set up an edgy last quarter.
Both sides threatened to break through to claim a decisive score, but saw promising positions go begging either through poor handling or some fine defensive work.
Ospreys held out but Scarlets will be encouraged by their comeback - and a losing bonus point - and will look to turn the tables when the two sides meet again at Parc y Scarlets on 3 January.
Ospreys: Dan Evans; Hanno Dirksen, Ashley Beck, Josh Matavesi, Eli Walker; Dan Biggar, Rhys Webb; Marc Thomas, Scott Baldwin, Dmitri Arhip, James King, Alun Wyn Jones (capt), Dan Lydiate, Justin Tipuric, Tyler Ardron.
Replacements: Sam Parry, Gareth Thomas, Daniel Suter, Rynier Bernardo, Sam Lewis, Martin Roberts, Sam Davies, Aisea Natoga.
Scarlets: Liam Williams; Harry Robinson, Regan King, Hadleigh Parkes, Kristian Phillips; Rhys Priestland, Aled Davies; Rob Evans, Emyr Phillips, Samson Lee, Jake Ball, George Earle, Aaron Shingler, John Barclay (capt), Rory Pitman.
Replacements: Kirby Myhill, Wyn Jones, Rhodri Jones, Lewis Rawlins, Will Boyde, Rhodri Williams, Steven Shingler, Steffan Hughes.
Referee: Marius Mitrea (FIR)
Assistant Referees: Wayne Davies, Jon Mason (both WRU)
Citing Commissioner: Jeff Mark (WRU)
TMO: Derek Bevan (WRU)