|Scarlets (20) 26|
|Tries: Barclay, A Davies Cons: A Thomas 2 Pens: A Thomas 4|
|Ospreys (20) 27|
|Tries: Dirksen, A W Jones, Walker Cons: Biggar 3 Pens: Biggar 2|
Ospreys edged a dramatic and pulsating Welsh Pro12 derby as Scarlets fly-half Steven Shingler missed a last-minute penalty that would have won the game.
The visitors have now won six of their seven west Wales Boxing Day clashes against the Llanelli-based team.
John Barclay and Aled Davies went over for the home side's tries with Hanno Dirksen and Alun Wyn Jones replying before the break.
Dan Biggar converted Eli Walker's try to give Ospreys victory.
The home side's rollercoaster season had put them at the top of the Pro12 with eight wins from nine starts and bottom of Pool 3 in the European Champions Cup with four defeats.
That was in clear contrast to Ospreys' record of only four previous wins in the Pro12 while sitting top of Pool 2 in Europe's top-tier tournament.
Scarlets stayed top despite defeat after second-placed Connacht were beaten 10-3 by Ulster later in the day, while Ospreys remained eighth.
Dirksen's power play
Scarlets were rewarded for taking the early initiative as flanker and captain Barclay went over in the corner for Aled Thomas to convert.
The home side had gone close from a series of driving mauls and straight-running forward forays.
That created the space for Barclay to take the scoring pass and touch down unopposed on his return to the open-side jersey in the absence of injured James Davies.
Penalties from fly-half rivals Thomas and Biggar kept the scoreboard moving with the home side leading until Ospreys' first try.
They made the most of a scrum-five by bringing powerful runner Dirksen into play to charge over. Biggar's conversion levelled the scores at 13-13.
Back came the hosts with another attack that combined route-one forward power with vision out wide.
Jack Condy, on for injured skipper Barclay, got to within a metre of the line where scrum-half Davies picked up to burrow over and Thomas converted.
Jake Ball's sin-binning for a late tackle on a kneeling Biggar did not help Scarlets' cause.
Just when Wayne Pivac's side thought they might have the lead at the break, Ospreys lock Jones' overhead pass put centre Ben John into space and the visiting captain provided the finishing touch.
Biggar converted to send the sides into half-time level at 20-20.
Thomas restored Scarlets' lead with two penalties after the break only for Ospreys to go into the lead when Moldovan prop Dmitri Arhip's touchline burst paved the way for wing Walker's unhindered saunter to the line.
Biggar converted, but then uncharacteristically missed a penalty before fluffing another of his specialities by spilling instead of taking a high ball.
Wales flanker Dan Lydiate's rash, off-the-ball tackle on rival Aaron Shingler was another aberration.
But Scarlets' Shingler, on for Thomas at fly-half, was also awry with the last-minute penalty, much to the relief of the visitors.
Scarlets: Michael Collins; Steff Evans, Gareth Owen, Hadleigh Parkes, DTH van der Merwe; Aled Thomas, Aled Davies; Rob Evans, Ken Owens (capt), Jake Ball, Lewis Rawlins, Aaron Shingler, John Barclay, Morgan Allen.
Replacements: Emyr Phillips, Phil John, Rhodri Jones, George Earle, Jack Condy, Rhodri Williams, Steve Shingler, Regan King.
Ospreys: Dan Evans; Eli Walker, Ben John, Josh Matavesi, Hanno Dirksen; Dan Biggar, Tom Habberfield; Paul James, Scott Baldwin, Dmitri Arhip, Lloyd Ashley, Alun Wyn Jones (capt), Dan Lydiate, Justin Tipuric, James King.
Replacements: Sam Parry, Nicky Smith, Aaron Jarvis, Rory Thornton, Dan Baker, Olly Cracknell, Martin Roberts, Sam Davies.
Referee: Nigel Owens (Wales)
Assistant referees: Leighton Hodges, Wayne Davies (both Wales)
Citing commissioner: Aurwel Morgan (Wales)
TMO: Jon Mason (Wales)