Van Avermaet pipped Jakob Fuglsang of Denmark into second with Rafal Majka of Poland taking bronze at the end of the gruelling 237.5km race.
It continued a stunning summer for the 31-year-old Van Avermaet, who won a stage of the Tour de France last month while also holding the coveted race leader’s yellow jersey for three days.
A dream year for Van Avermaet has also included winning his first major week-long stage race, Tirreno-Adriatico, and the Omloop Het Nieuwsblad one-day classic.
He and Fuglsang caught runaway leader Majka 1.5km from the finish on the world famous Copacabana beach before the latter two contested the sprint finish.
Today's golden boy! 🏅@GregVanAvermaet #Rio2016 pic.twitter.com/j1wziH4isG
— UCI (@UCI_cycling) August 6, 2016
Majka had looked set to win as he found himself alone in front 12km from the finish after breakaway companions Vincenzo Nibali and Sergio Henao crashed on a fast descent.
But the Pole didn’t have the strength to hold off the charging Van Avermaet and Fuglsang.