The Quick-Step Floors rider was too good for world road champion Peter Sagan (BORA-hansgrohe) and Katusha Alpecin's Marcel Kittel on a predicted quiet day which saw several of the favourites lose time.
The win by Gaviria saw him become the first Colombian to win a bunch sprint of the Tour de France and the second Colombian to take the yellow jersey, fifteen years after Victor Hugo Peña managed the same feat.
"It's incredible, I don't have enough words to tell you how I feel on this amazing day," said Gaviria.
"I was thinking of the victory, but to take also the yellow jersey was a dream, a dream which I turned into reality thanks to the beautiful work of all my teammates, who rode their heart out for me and made sure of bringing me into the best position for the final. That's why this win isn't just mine, is of the entire team."
[tdf widget="stagewinners" stage="1"]
The stage was set for the sprinters with the 201km of racing held on a pancake flat course with the exception of a small bump contributing a single point to the mountains classification and 70 for the Green Jersey.
Three French riders, Kevin Ledanois (Fortuneo-Samsic), Jerome Cousin (Direct Energie) and Yoann Offredo (Wanty-Groupe Gobert) attacked at the drop of the flag and quickly established an advantage of more than three minutes which then stabilised.
The trio did not contest the intermediate sprint but just over two minutes later Gaviria showed his intent by taking the remaining points in the bunch sprint.
The final 10km was where the race blew up with general classification contenders scattered all over the road. Richie Porte (BMC) and Adam Yates (Mitchelton-Scott) were the first of the big names caught out, held up behind a crash with ten kilometres remaining.

Chris Froome (C) recovered quickly after his crash but lost some time. Source: Getty
As their teams mustered to chase back on, Chris Froome and Egan Bernal (both Team Sky) were involved in separate crashes that saw them both lose time on the stage.
With some of the biggest riders in the race on the back foot, they were soon joined by another favourite in Nairo Quintana (Movistar), who had a mechanical with 3.4km left to race.
That split the bunch to bits and they couldn’t make it back to the pack before the finish finishing some 50 seconds in arrears with Quintana a minute and 15 seconds off the pace set by Gaviria.
“We were right at the front part of the peloton in the top third," Froome said. "There wasn’t too much more the guys could have done. It was getting quite chaotic with some of the sprinters there, but that’s bike racing. I’m just grateful I’m not injured in any way and there’s a lot of road to cover before Paris obviously.”