RaboDirect PRO12 leaders Ulster were given a scare by Treviso before running out 16-15 winners in Italy.
A try from Peter Nelson helped Ulster edge a nail-biting clash away at Treviso to make it 11 consecutive wins.
The Ulstermen headed into the clash on the back of a narrow win over Zebre on Italian soil, while Treviso were looking to bounce back from a run of four consecutive defeats.
And it was the Italian hosts who got off to the perfect start, with full-back Brendan Williams showing tremendous guile to cross for a converted try on seven minutes.
12 minutes later Niall O'Connor reduced the arrears with a penalty goal and less than five minutes after that the visitors were in front.
Nelson's try came after a Paul Marshall tap penalty sent Tom Court on the attack. It caught the Treviso defence unaware, and they were unable to regroup in time to prevent what would prove to be a crucial Ulster try.
O'Connor's conversion made it 7-10 in favour of the visitors, though a Di Bernardo penalty ahead of the half-hour brought the scores level, before an unconverted Ludovico Nitoglia try on the stroke of half-time put the hosts back in front.
At 15-10 the game remained for the taking and a tense second half would follow, during which neither team were able to assert their superiority.
Ulster had been given an almighty scare a week earlier against Zebre, and there were definite echoes of last week's drama on this occasion.
O'Connor's second penalty of the evening on 48 minutes took the visitors to within two points, before Nick Williams was denied a try for the visitors when the referee pulled back play to award a penalty to the hosts.
To Treviso's credit, the dam would not break, but further indiscipline just before the hour afforded O'Connor the opportunity to boot Ulster in front.
The hosts were now chasing the game but, though they rallied in the final quarter, there was no way past the resolute visiting defence, which had worked so hard to wrestle the lead away from the gallant Italians.
Tries: Nitoglia, Williams
Cons: di Bernardo
Pens: di Bernardo
Pens: O'Connor 3
Treviso: 15 Brendan Williams, 14 Giulio Toniolatti, 13 Christian Loamanu, 12 Andrew Vilk, 11 Ludovico Nitoglia, 10 Alberto Di Bernardo, 9 Fabio Semenzato, 8 Marco Filippucci, 7 Paul Derbyshire, 6 Valerio Bernab˛, 5 Corniel Van Zyl (c), 4 Marco Fuser, 3 Jacobus Roux, 2 Franco Sbaraglini, 1 Matteo Muccignat.
Replacements: 16 Enrico Ceccato, 17 Giovanni Maistri, 18 Ignacio Fernandez-Rouyet, 19 Filippo Giusti, 20 Andrea Pratichetti, 21 Angelo Esposito, 22 James Ambrosini, 23 Luca Morisi.
Ulster: 15 Peter Nelson, 14 Andrew Trimble, 13 Jared Payne, 12 Paddy Wallace, 11 Michael Allen, 10 Niall O'Connor, 9 Paul Marshall, 8 Roger Wilson (capt), 7 Mike McComish, 6 Nick Williams, 5 Nigel McComb, 4 Robbie Diack, 3 Declan Fitzpatrick, 2 Rob Herring, 1 Tom Court.
Replacements: 16 Nigel Brady, 17 Callum Black, 18 John Afoa, 19 James Simpson, 20 Ali Birch, 21 Michael Heaney, 22 Stuart Olding, 23 Chris Cochrane.
Referee: Peter Allan (SRU)