Pro12 leaders Ulster edged out Treviso in a dramatic encounter in Italy to maintain their perfect league record.
A Brendan Williams try gave Treviso an early lead before Peter Nelson slid over to score his first try for Ulster.
Ludovico Nitoglia touched down in the corner to to make it 15-10 to Treviso at the break but two Niall O'Connor penalties edged Ulster ahead.
Ulster's poor line-outs gave Treviso hope but Alberto Di Bernardo missed a late penalty as the visitors held on.
Ulster made a ragged start and the opening try came when they lost ball from their own line-out on eight minutes.
Williams took a pass from Nitoglia before cutting inside and going over, with Di Bernardo adding the conversion.
The visitors improved and Nick Williams stretched over but it went to the TMO, and with the replays inconclusive, a five-metre scrum was awarded.
Niall O'Connor opened Ulster's account with a 20th-minute penalty and young full-back Nelson slid in at the corner four minutes later after good work from Paul Marshall and Tom Court.
O'Connor's excellent conversion from wide put Ulster 10-7 ahead but Treviso hit back with Di Bernardo levelling from a penalty.
Treviso finished the half strongly, their dominant line-out allowing Nitoglia the space to sprint in at the corner for an unconverted try.
Ulster upped the tempo after the break and O'Connor slotted over his second penalty in the 50th minute.
Williams was denied a try by the TMO for a second time, the flanker driving over amid a mass of bodies but with the replays again inconclusive.
O'Connor hooked a penalty wide before firing between the sticks on 58 minutes to put Ulster ahead.
Ulster's dysfunctional line-outs always offered Treviso encouragement, although the Irish side held sway in the scrum.
Mike McComish was lucky to escape punishment when he caught Di Bernardo late as the fly-half cleared.
Di Bernardo should have won it for the Italians a minute from time but the pressure told as he dragged his penalty well wide, allowing Ulster to chalk up their ninth win from nine Pro12 games.
Benetton Treviso: B Williams, G Toniolatti, C Loamanu, A Vilk, L Nitoglia, A Di Bernardo, F Semenzato, M Muccignat, F Sbaraglini, J Roux, M Fuser, C Van Zyl, V Bernabo, P Derbyshire, M Filippucci.
Replacements: J Ambrosini for Williams (60), L Morisi for Toniolatti (74), A Pratichetti for Nitoglia (52), I Rouyet for Muccignat (42), E Ceccato for Sbaraglini (55), F Giusti for Filippucci (21).
Not Used: G Maistri, A Esposito.
Ulster: P Nelson, A Trimble, J Payne, P Wallace, M Allen, N O'Connor, P Marshall; T Court, R Herring, D Fitzpatrick, R Diack, N McComb, N Williams, M McComish, R Wilson (capt).
Replacements: C Black for Court (63), N Brady for Herring (67), J Afoa for Fitzpatrick (41).
Not Used: J Simpson, A Birch, M Heaney, S Olding, C Cochrane.
Ref: Peter Allen (RFU).