Philippe Saint-Andre’s men were in control at 17-0 up but Canada, never afraid to counter-attack at pace or spin the ball wide against the beaten 2011 finalists, refused to fold.
Two tries in four minutes towards the end of the first half gave Canada a sniff of an upset and it was not well until the last quarter that the French finally wrestled back control as the underdogs tired.
Late tries from Pascal Pape and Remy Grosso, on his debut, earned France a bonus-point win that takes them top of Pool D on 14 points, four ahead of fellow group heavyweights Ireland who they face in their finale at the Millennium stadium in Cardiff on Oct. 11.
“We reached our first objective, three wins and 14 points…so now we have to prepare for Ireland and our target is to finish top of the group,” Saint-Andre said.
France had impressed only in parts in sterile wins over Italy and Romania but appeared ready to shake off the shackles when Wesley Fofana burst over the line after three minutes from Frederic Michalak’s break.
More magic from Michalak, whose first penalty took him past Thierry Lacroix’s record for his country of 124 points in World Cups, almost put in Fofana again soon after but he botched the chance.
Fofana was heavily involved in France’s second try, he and fellow midfield battering ram Mathieu Basteraud pinning back the Canucks’ defence before a rolling maul sent hooker Guilhem Guirado over.
But Canada, despite losing captain Tyler Ardron to injury, hit back in exhilarating style.
A brilliant take from the restart by centre Ciaran Hearn sparked an attack finished by left wing DTH Van Der Merwe for his third try of the tournament.
Their tails up, Canada attacked the French lines again and pouring forward, Aaron Carpenter picked up from the base of the ruck to score.
Having seen their 17-point advantage whittled down to five, France went back to the driving maul to pile over and restore some order with prop Rabah Slimani the man to emerge with the ball.
Canada held their own for long spells after the break, adding to French frustrations with Nathan Hirayama’s two goals closing the deficit to six with 25 minutes left.
Michalak nosed France further ahead again and it was French forward power that finally won the day with Pape scoring from the base of the ruck before good handling allowed Grosso to touch down in the corner.
Canada dominated Italy for long spells before losing by five points on Saturday and coach Kieran Crowley said he was proud of another fine performance.
“We did well to get to within six points of France but made basic mistakes and you can’t afford to do that against a top team,” Crowley said.
“We are disappointed with how the result went but I am happy we competed for long periods.”
(Reporting by Justin Palmer; editing by Mitch Phillips)