Henao spearheaded the last of three lively attacks from Team Sky, attempting to bridge to a lead group from a selective peloton, only to see Ulissi and his fellow escapees break free from a large break and evade their pursuers and decide a six-up sprint between themselves.
After an early break was allowed to stay away for the opening 100km of the stage, Ian Boswell capitalised on an indecisive peloton to attempt a long range solo effort with 65km to go.
He was able to create and maintain a gap and he was joined by Natnael Behane (Team Dimension Data) then a host of other contenders before the break was brought back 20km later.
A sprint finish looked to be on the cards until Peter Kennaugh sparked a large move with 12 kilometres remaining to move clear, but as Sergio Henao and Tim Wellens (Lotto Soudal) attempted to bridge the gap from the ever-dwindling peloton, Ulissi and his fellow escapees, Bauke Mollema (Trek-Segafredo), Tony Gallopin (Lotto-Soudal), Jesus Herrada (Movistar), Tom-Jelte Slagter (Cannondale-Drapac), Jan Bakelants (Ag2r La Mondiale), went clear in the decisive move.
Despite a late push by the chasing pack, the sprint finish came down to a six-man sprint which saw Ulissi come out on top, with Sergio Henao finishing inside the top 20.