But it appeared the Italian side were heading to victory - after a 72nd-minute penalty try - until replacement scrum-half O'Donohue crossed the line and Dan Parks converted, the match finishing deadlocked.
Alberto di Bernardo opened the scoring with a penalty after the visitors infringed at the ruck after just three minutes, indiscipline which was to be a fixture of the game.
But Connacht then took control of a fixture rearranged after the original match was called off because of a waterlogged pitch last month.
After 16 minutes a great lineout catch set up Fetu'u Vainikolo and the winger's brilliant turn of pace left Treviso trailing and visiting supporters beaming, Parks threading the resulting conversion.
After two previous misses, Parks slotted his first penalty just before the interval but the Galway side were on the back foot after the break, with Treviso head coach Franco Smith warning his side that nothing less than a victory was required if they were to achieve their ambition of a top half of the table finish.
Di Bernardo reduced the deficit with another penalty and then converted after a Parks clearance was charged down and Edoardo Gori scored the hosts' first try.
This was an attritional battle and the game continued to stay close through a pulsating second half, with Parks kicking proceedings level again with another penalty.
Di Bernardo and Parks continued to exchange penalties and silly infringements continued to cost both sides dear and calling a winner was all but impossible heading into the final ten minutes.
Connacht's defence was being tested to the limit and it buckled eight minutes from time when the referee awarded a penalty try after some serious pressure at the scrum.
Di Bernado converted to give Treviso a seven-point lead to defend as they appeared to edge closer to their tenth win of the season.
But replacement O'Donohue made his contribution at the death, moving Eric Elwood's side above Cardiff Blues to eighth on the league table.
|Benetton Treviso Score Card|
|Alberto di Bernardo||2||3||13|
|Connacht Rugby Score Card|