The Brit finished over two seconds ahead of Lotus's Romain Grosjean and Sauber's Sergio Perez to put himself at the top of the Drivers' standings. The 27-year-old's triumph in Canada came five years to the day since he won his first F1 race on the same track.
"Lewis went for the second stop, we tried then to get the place back by going for one stop, same as Ferrari," said Vettel.
"But it turned out to be the wrong call. We decided in the end to come in again which was a great call at the time, given what you can lose with seven laps to go.
"It was an interesting race again, another winner - Lewis deserved to win, we have to learn the lesson, take it on board, don't do it again and make a step forward in Valencia."
Vettel finished fourth in the race despite starting on pole postion.