Chaves (Orica-BikeExchange) outsprinted Diego Rosa (Astana) and Rigoberto Uran (Cannondale-Drapac).
Chaves has been one of the stars of the 2016 cycling season after a runner-up finish at the Giro d'Italia and third place at the Vuelta a Espana.
The 26-year-old capped his season in fine style, becoming the first Colombian winner of the race and the first Colombian to win one of the five 'monuments'. The others are Milan-Sanremo, the Tour of Flanders, Paris-Roubaix and Liege-Bastogne-Liege.
Romain Bardet (AG2R), who was part of the leading four in the final stages of the 240km race between Como and Bergamo, was dropped in the final kilometre and took fourth place.
Rosa repeatedly attacked on the final ascent, a 1.7km effort at an average gradient of 7.9 per cent, but Chaves hung on and stayed quiet, saving his energy for the final sprint.
“Today is a dream come true. I started my pro career here in Lombardy, staying at Curno, very near Bergamo," Chaves said.
"Claudio Corti, who was the manager of Team Colombia, gave me the love for Italian cycling. It’s a big thing for me to become the first non-European to win Il Lombardia and the first Colombian to win a monument.
"In the last kilometre I was scared to not win, but had I come second or third I knew I had done my best anyway.
"I’m a Grand Tour specialist and I’ve had a 2016 season in which I reached the goals I had at the beginning of the year, but if there’s a one-day race that has a special place in my heart and it’s this one.”
Defending champion Vincenzo Nibali had skipped Lombardia leaving team-mate Fabio Aru as Astana's main hope, but he was upstaged by Rosa.
Aru was among several contenders dropped definitively by Chaves and his front group when the Colombian upped the pace 34km from the finish.
Rosa, 27, has yet to claim his maiden professional win and admitted a miscalculation, coupled with the determination of Chaves, ended his dream at the finish.
"I really thought I could win," Rosa said. "I attacked before the final bend and thought it would be enough to beat Chaves. If I'd come out of that bend a little quicker I would have succeeded."
Uran, claiming his second third-place finish after 2012, said he had no complaints about narrowly missing the win again.
"Today I was struggling a little on the descents. On the Valcava (descent), I was losing a little ground at every bend and spent a lot of energy trying to keep up," he said.
"But in the end, the rider with the best legs won."