Defending Formula 1® drivers' champion Verstappen defended expertly to keep Sainz at bay over the closing laps in Montreal, sealing the sixth win of his season and extending his championship lead to 46 points.
Red Bull team-mate Sergio Perez, who abandoned Sunday's race in its early stages, sits second, while Sainz is fifth but producing strong results every time he finishes.
The Spaniard has had three DNFs, twice crashing out, but he has had five podiums and a fourth place in the other six races to date.
For the 27-year-old, however, the wait for a first Formula 1® race victory goes on.
Formerly of Toro Rosso, Renault and McLaren, he has been a staple of the top 10 in recent seasons, without yet scaling the top step.
He said of Sunday's race: "I was pushing flat out. I wasn't leaving any inch to the walls. I was pushing everything with the battery.
"I tried everything to pass Max, but today we just didn't have enough pace to get close enough in the hairpin to then get him a bit out of line into the chicane.
"But the positive thing is we were quicker, we were faster all race, we just [needed] that little bit more to overtake around here.
"I'm particularly happy with the race pace, with the way we managed to put pressure on Max during the whole race, and the timing of the pit stops I think was right."
Team-mate Charles Leclerc, third in the championship, has won twice already this season. He surged from a back-row start to earn fifth place in Canada.
Silverstone and the British Grand Prix is next on the calendar, with Sainz seeing grounds for Ferrari optimism.
He said: "Honestly, we tried everything, and we were very, very close to winning today, so I take the positives and keep trying in the next one."