The EF Education First rider placed ahead of Miguel Angel Lopez, his fellow Colombian, in second.
Frenchman Nicolas Edit was in third for Cofidis.
In fourth place came Simon Yates, racing for Mitchelton-Scott after a frantic finish.
The top four swapped positions throughout much of the course, leading the pack from a 39-strong reakaway.
The eighth stage takes place tomorrow in Nice with a 110km road race.
Egan Bergal from Team Sky took over the overall lead after teammate Michal Kwiatkowski faded in the last stages.