The WorldTour race, characterised by the short, sharp and brutal climbs along it's 12km route saw a flurry of attacks in the last two laps of the 17 the peloton had to take on, but it came down to an almost bunch sprint in the end.
Fabian Grellie (Direct Energie), Sean De Bie (Lotto-Soudal), Jasha Sütterlin (Movistar), Lukas Pöstlberger (Bora-Argon 18), Matteo Dal-Cin and Benjamin Perry of Canada got 5-25 as the day's main breakaway, but never looked likely to succeed and were eventually caught within 30km to go.
Geraint Thomas (Team Sky) made the move at 45km to go on a climb to split the peloton, forming a second group of 25 riders that tried to get away.
Their work effectively killed off the breakaway out front, but the peloton behind refused to let them go and it was all back together, before more attacks ensued.
None of those attacks, including from Thomas Voeckler (Direct Energie), were able to stick for very long until the peloton reached the third to final climb.
There an elite group quickly formed, with the likes of world champion Sagan involved as well as Van Avermaet.
But it was Lampre-Merida who made a daring move, with Diego Ulissi leading out Rui Costa who attacked on the climb in search of victory.
A big push immediately followed to try and catch him, with the Bauke Mollema (Trek-Segafredo), Gianni Moscon (Team Sky), Julian Alaphilippe (Etixx-Quick Step), Rigoberto Uran (Cannondale-Drapac), as well as Sagan and Van Avermaet among those following.
Costa held a gap of 10 seconds or so as the group struggled to work together behind, and they were briefly brought back to the main peloton with 6km to go.
Former world champion Costa continued his move up front, and a similar group led by Sagan formed again behind and quickly brought him close. This time, Petr Vakoc made most of the effort for his Etixx teammate Alaphilippe, and it quickly became clear Costa's efforts had been in vain.
The Portuguese held out until the final kilometre though, where his teammate, Sagan and Van Avermaet began their sprints for the line.
Sagan appeared to get boxed in briefly but was able to find Van Avermaet's wheel. The Belgian was too strong though, and was able to hold his sprint long enough that there was no chance for Sagan to make the effort to come round him.
The victory caps of a tremendous season for Van Avermaet, and sees the reverse first and second of Friday's GP de Quebec, in which he lost out to Sagan.
Both riders are likely to face each other again this month, as they could line-up for their respective teams at the Eneco Tour on September 19.
Grand Prix Cycliste de Montréal (205.7km)
1. Greg Van Avermaet (Bel) BMC, in 5-27-04
2. Peter Sagan (Svk) Tinkoff
3. Diego Ulissi (Ita) Lampre-Merida
4. Michael Matthews (Aus) Orica-BikeExchange
5. Nathan Haas (Aus) Dimension Data
6. Gianni Moscon (Ita) Team Sky
7. Alberto Bettiol (Ita) Cannondale-Drapac
8. Ion Izaguirre (Esp) Movistar
9. Anthony Roux (Fra) FDJ
10. Julian Alaphilippe (Fra) Etixx-Quick Step, all same time
Thank you for reading 20 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1