Ospreys fly-half Luke Price kicked a 76th-minute winning penalty to end a four-month losing sequence for the Welsh region with victory over Ulster.
Price kicked 11 points to complement two tries from hooker Scott Otten and a further score from returning Wales centre Owen Watkin.
Ulster responded with tries from wing Robert Baloucoune, full-back Matt Faddes and centre Stuart McCloskey.
In terrible conditions in Swansea, Ospreys broke a 13-match losing run.
More to follow...
Ospreys: C Evans; Dirksen, O Watkin, K Williams, L Morgan, L Price, A Davies; N Smith, Otten, S Gardiner, A Beard, B Davies, D Lydiate (capt), O Cracknell, G Evans.
Replacements: S Parry, G Thomas, G Gajion, L Ashley, S Cross, S Venter, T Thomas-Wheeler, J Hook.
Ulster: M Faddes; R Baloucoune, L Marshall, S McCloskey, L Ludik; B Burns, D Shanahan; E O'Sullivan, A McBurney, M Moore, A O'Connor (capt), K Treadwell, M Rea, S Reidy, M Coetzee.
Replacements: J Andrew, J McGrath, T O'Toole, D O'Connor, J Murphy, J Stewart, B Johnston, C Gilroy.
Referee: Marius Mitrea (FIR)
Assistants: Nigel Owens (WRU), & Manuel Bottino (FIR)
TMO: Alan Falzone (FIR)