The Italian side appeared set to take all the points from a closely-contested encounter but O'Donohoe crossed after the hooter to pull the score back to 23-21, and Dan Parks duly added the extras from the conversion to ensure the draw.
Fetu'u Vainikolo had earlier crossed for the opening try of the contest, but Edoardo Gori's effort and a late penalty try appeared to be enough for the Italians until O'Donohoe's dramatic intervention.
The hosts jumped out into an early lead when Connacht infringed at the ruck and Alberto di Bernardo slotted the resulting penalty.
Parks spurned a chance to level in the 16th minute, pulling his kick to the right of the posts after Treviso were penalised for failing to bind at the scrum.
But that miss was forgotten three minutes later when Vainikolo received the ball from a good lineout catch and gleefully went over to the left of the posts.
Parks added the conversion to hand Connacht a 7-3 lead.
The fly-half missed a penalty in the 31st minute but made amends with another chance four minutes later as the visitors went into the break with a seven-point cushion.
Di Bernardo reduced the deficit with a penalty shortly after the break and within minutes Treviso had their noses in front when Gori crossed and Di Bernardo added the extras.
Parks and Di Bernardo traded penalties to take the score out to 16-16 but with 72 minutes gone Connacht's hopes took a setback when they succumbed to pressure at the scrum and conceded a converted penalty try.
The hosts looked certain to take the win as the game ticked into added time, but O'Donohoe crossed to pull Connacht to within touching distance, and Park held his nerve with the extras to bring an end to an enthralling encounter.