Van Avermaet beat Jakob Fuglsang (Denmark) into second place and Rafal Majka (Poland) into third after the trio broke clear of the rest of the field in the closing kilometres.
Geraint Thomas (Great Britain) was part of a leading group going up the last of the day’s 11 climbs but crashed on the descent and eventually finished 2min 29sec down in 11th place.
The race for gold had looked set to be a shootout between Majka, Vincenzo Nibali (Italy) and Sergio Henao (Colombia) after the trio had attacked out of the lead group on the final climb, but Nibali and Henao both then crashed on the descent down the other side to leave Majka out on his own heading on to the flat 9.5km to the finish.
It looked like he would hang on for victory when he opened up a lead of 25 seconds over an uncoordinated chase group, but then Fuglsang and Van Avermaet counter-attacked with 5km to go and caught him with just under 1.5km left.
Van Avermaet was the first to launch his sprint and although Fuglsang tried to follow, victory for the Belgian never looked in doubt.
Nibali, who had been the pre-race second favourite, was unable to finish the race, while pre-race favourite Alejandro Valverde (Spain) was dropped at the bottom of the final climb and eventually finished 9min 38sec down in 30th.
Van Avermaet said: “I am so happy for gold. Everyone said all week it was for everyone else. When I saw the crash I was confused about how many riders were still up the road. I was working with Fuglsang, and we saw Majka. We knew it was possible. I knew I had to hang on.”
The race took place on a 237.5km course in and around Rio and Britain had looked perfectly placed when they started the 8.9km final climb to Vista Chinesa with Froome in the peloton and both Thomas and Yates in a lead group also containing Van Avermaet, Nibali, Fuglsang, Majka, Michal Kwiatkowski (Poland), Fabio Aru (Italy) and Andrey Zeits (Kazakhstan).
However, when Nibali launched the first of three attacks, Yates was dropped and although Froome tried to counter-attack out of the bunch, it was clear he wasn’t at his electric best and he quickly started going backwards.
Nibali finally broke clear of the lead group with his third attack, about 3km from the summit, but he was caught by Majka and Henao and the trio started the tight and twisting descent off the final climb with a healthy advantage over the chasers.
Nibali tried to drop his companions once again by setting a breakneck pace on the descent, but both he and Henao pushed their luck too far and fell, and without their help, Majka was ultimately unable to resist Van Avermaet and Fuglsang’s late surge.
Froome will now shift his attention to Wednesday’s time trial, which he will start as one of the favourites for gold.
1 Greg Van Avermaet (Belgium), 6:10:05
2 Jakob Fuglsang (Denmark), same time
3 Rafal Majka (Poland), +5sec
4 Julian Alaphilippe (France), +22
5 Joaquim Rodriguez (Spain), st
6 Fabio Aru (Italy), st
7 Louis Meintjes (South Africa), st
8 Andrey Zeits (Kazakhstan), +25
9 Tanel Kangert (Estonia), +1:47
10 Rui Costa (Portugal), +2:29
11 Geraint Thomas (Great Britain), st
12 Chris Froome (Great Britain), +2:58
15 Adam Yates (Great Britain), +3:03