Wales scrum-half Rhys Webb crossed twice as Ospreys went top of the Guinness Pro 12 with a bonus point victory over Ulster at the Liberty Stadium.
An entertaining display saw Ospreys completely dominate the game, scoring tries through wing Hanno Dirksen and Dan Biggar, who added an additional 11 points from the tee.
Ospreys, who had not won since October, named new signing Dan Lydiate on the replacements bench. He came on after 50 minutes.
Ulster were indebted to late tries by replacement Rob Herring and former Ospreys winger Tommy Bowe with Ian Humphreys providing 10 points with the boot.
It was Ulster's second trip to Wales in a week after going down at Scarlets last Sunday 22-13, while Ospreys suffered a European defeat in Paris at the hands of Racing Metro.
An impressive defensive drive after only two minutes involving Alun Wyn Jones earned Ospreys a penalty which the ever-reliable Biggar kicked from just outside the 22.
Humphreys found his range with a 45 metre penalty to level the scored on 15 minutes.
However, Ospreys were back in front only three minutes later through a fine try begun by full-back Dan Evans from a line-out and finished by Biggar with Alun Wyn Jones and Marc Thomas playing important part. Biggar also converted to give Ospreys a 10-3 lead.
It was surprising that the Ospreys were not further ahead as the likes of Evans and Dirksen continued to break through Ulster's defence.
But they did score a second try three minutes from the interval. A poor Humphreys clearance produced a concerted Ospreys attack which saw lock Rynier Bernado put Webb over for Biggar to add the extras.
There was controversy just before half-time when referee Neil Paterson awarded Ulster a try only to rule it out on the intervention of the TV match official Tim Hayes and assistant referee Nigel Owens.
They pointed out there was a double knock-on in the lead up to Humphreys going over. The disallowed try meant Ospreys led 17-3 at the break.
Ulster, who lost Ruan Pienaar to a knee injury at half-time, scored first after the break through a 44th minute penalty through Humphreys.
But the Ospreys scored a third try and Webb's second on 49 minutes after good work by Josh Matavesi, Tipuric and Eli Walker, who appeared to knock-on. Biggar put over his third conversion to give the home side a 24-6 lead.
That became 31-6 on seven minutes later as Dirksen powered his way over from a scrum for the bonus point to ensure Ospreys went top.
Ulster grabbed a try back through Herring on the hour mark and Bowe eight minutes later as the visitors closed the gap to nine points but could not muster a losing bonus point.