The Italian Lampre-ISD rider won a seven-man sprint to the line to take the victory, with Australian Rory Sutherland (UnitedHealthcare) second and Danilo di Luca (Acqua & Sapone) coming third.
Overnight leader Cesare Benedetti (Team NetApp) remained top of the general classification after finishing safely in the main bunch, which was just two seconds behind the lead group.
"Today I have to thank the friends and the whole team who believed in me and put me in a better position to achieve maximum results," said Ulissi.
"I am happy that my condition is improving more and more signs that the work I've done is beginning to bear fruit. The race today was very well managed by the team in all, I was escorted into the ideal position by my team-mates and then I gave my best to win."