Wing Nikki Walker's two tries proved crucial for the Ospreys
Ospreys 29 (16)
Tries: Walker 2.
Cons: Connor 2.
Pens: Connor 3.
DG: Connor 3
Ulster 22 (9)
Pens: Steinmetz 5.
A try in each half from Nikki Walker proved enough for the Ospreys to hold off Ulster for a Magners League win.
The Scottish wing added the pace and power to a fine fly-half display from Shaun Connor, who kicked 19 points.
But Ulster were always in touch thanks to Paul Steinmetz, who kicked five penalties and converted Stephen Ferris' late try to gain a losing bonus point.
Ospreys started with Gavin Henson at full-back at Wales' request, but a knee injury forced him off after 53 minutes.
Although his display in the 15 shirt may not have set the pitch alight, Henson did produce a solid display for the time he was on.
He was on hand to show his defensive abilities with an all-embracing tackle on Tommy Bowe which prevented an almost certain Ulster try.
But it was only a few impressive moments from Henson, who had been asked to play at full-back by the Wales team management ahead of next Sunday's RBS Six Nations clash with Ireland.
The performance and the knee injury will give Wales coach Gareth Jenkins plenty to ponder ahead of his team announcement on Monday.
The victory extended the Ospreys' unbeaten run at home to 14 games and marked some revenge for their 43-7 reversal at Ravenhill in the autumn.
It took the Ospreys until only the third minute to take the lead through the first of Connor's two dropped-goals.
But the advantage was short-lived as Steinmetz slotted two penalties in the space of two minutes.
Two Connor penalties gave Ospreys a 9-6 advantage on 24 minutes and with their next attack the Welsh extended that lead to 20 points with a well-worked try for Walker.
Just before the interval Steinmetz converted his third penalty - the longest of the trio - following a high tackle by Andrew Millward, to make it 16-9 at half-time.
Steinmetz made it four out of four with a penalty five minutes into the second half as Ulster upped the tempo.
But from a concerted Ulster attack the Ospreys turned the ball over through Connor and hooker Huw Bennett sent Walker away on a 55-metre run for his second try.
Steinmetz kept Ulster in the game with a fifth successful penalty but Connor cancelled that out to restore an 11-point advantage.
That lead was then cut when Stephen Ferris scored Ulster's try from the restart when the Ospreys defence went to sleep, which was converted by Steinmetz to set up a nervous finish for the home side.
But Connor had the last say with his second drop-goal.
Ospreys: Gavin Henson; Richard Mustoe, Tal Selley, Andrew Bishop, Nikki Walker; Shaun Connor, Justin Marshall; Paul James (capt), Huw Bennett, Andrew Millward, Brent Cockbain, Mike Powell, Andy Lloyd, Richard Pugh, Jonathan Thomas.
Replacements: Barry Williams for Bennett (72), Cai Griffiths for Millward (63), Chris Martenko, Lee Beach for Lloyd (80), Steve Tandy for Pugh (69), Jason Spice, Stefan Terblanche for Henson (53).
Ulster: M Bartholomeusz; T Bowe, P Steinmetz, K Maggs, P McKenzie; A Larkin, K Campbell; J Fitzpatrick, P Shields, B Young; J Harrison, T Barker; S Ferris, K Dawson, R Wilson.
Replacements: S Philpott, D Fitzpatrick, R Caldwell, D Pollock for Ferris (78), P Marshall, S Young for McKenzie. (80), B Cunningham for Larkin (55).
Referee: Peter Allen (Scotland).