The Italian rider won by 34 seconds from Colombian climber Miguel Angel Rubiano (Androni Giocattoli) on the 162.3km stage from Gatteo.
Ulissi 's compatriot and Lampre-Merida team-mate Damiano Cunego was third ahead of Croatian Radoslav Rogina (Adria Mobil) at 1:11.
Rubiano is second on GC ahead of Cunego (+1:17).
The leading riders split from an 18-rider group at the front on the four finishing circuits at the finish in Sogliano al Rubicone.
There was an early six-man break - Jake Keough (UnitedHealthcare), Dominique Cornu (Topsport Vlaanderen-Baloise), Peter Kuzstor (Utensilnord Ora24.eu), Manuel Amaro (Ceramica Flaminia-Fondriest), Lukas Postlberger (Team Gourmetfein Simplon) and Cesare Benedetti (Team NetApp-Endura) - which lasted up to the finishing circuits.
Each lap of the circuit consisted of an 18 percent climb, effectively shedding most of the peloton until the 18 riders were left. Matteo Rabottini (Vini Fantini-Selle Italia) crashed on one descent before Cunego and Moreno Moser (Cannondale) attacked with three other riders - they were caught before the final climb/lap.
The lead group was down to 10 before the podium finishers made their move.
Stage three in the race held in the Emilia-Romagna region is a 157km run from Zola Predosa to Piane di Mocogno.