The Brit had looked fast all weekend, but after topping FP3 he could only managed seventh in qualifying whilst team-mate George Russell took pole, three tenths faster than Hamilton.
In the race, Mercedes' pace carried over and Russell led from the start before an error dropped him to third.
Another mistake late on let Hamilton through into P3, but Russell was able to re-pass his team-mate to take back his place on the podium, Mercedes' first non-sprint one of the season.
What did Hamilton say about his race in Canada?
Hamilton is now enduring his longest streak without an F1 podium, which dates back to the 2023 Mexico City Grand Prix.
Much of that has been down to Mercedes' lack of pace, but recent upgrades appear to have put the Silver Arrows back into contention.
Hamilton, though, could not get the measure of Russell when it mattered, and told Sky Sports after the race: "Over the weekend it was a really poor performance from myself.
“Some other things came into it yesterday, but mostly myself, and then today, just one of the worst races that I’ve driven, just lots of mistakes, but of course if I’d have qualified better, I would have been in a much better position.
“So, it is what it is, I will go back to the drawing board. On the positive note, big thank you to everyone at the factory for progressing this car because it is becoming a car that we can fight with.
"That’s a real positive going into this next part of the season. I know we’ll have hopefully some more upgrades coming along the way, so it’s going to be a close battle and if I get my head on right, I’ll get better results at some stage.”
Hamilton will join Ferrari in 2025, but will be hopeful of bowing out of his illustrious Mercedes career with at least one more victory.
“I think this weekend the car was capable of winning," he added. "So, that’s why it’s not such a great feeling but we’ll take the points and keep moving, keep trying.”