The Springboks ran in six tries in the first half hour at Kobe Misaki Stadium, and Canada's woes deepened a couple of minutes before halftime when replacement lock Josh Larsen was shown a red card for an illegal shoulder charge at a ruck.
South Africa were unable to maintain the same pace in the second half, and the short-handed Canadians scored a deserved try through flanker Matt Heaton in the 46th minute.
The Springboks still had very much the better of the contest, though, and four tries after the departure of Larsen sent them through to the knockout stages with three wins in four Pool B matches and a spring in their step.
Centres Damian de Allende and Frans Steyn, wings Sbu Nkosi and Warrick Gelant, hooker Schalk Brits, full-back Damian Willemse and prop Frans Malherbe also crossed the tryline for South Africa.
"It feels really good, especially after that performance," Bok skipper Siya Kolisi said.
"I'm really proud of the boys, especially in the first half. In the second half we got a bit looser, but the main thing is the boys had a lot of fun."
The Boks' dominance in the opening 40 minutes was stark as they cut the Canadian defence apart with speed at the ruck, slick hands and some intelligent use of the boot.
It was at times gruesome viewing for Canadian supporters as their team struggled to get their hands on the ball and had to withstand wave after wave of powerful raids on their line.
QUARTER-FINALS AHEAD
The Boks had wrapped up the bonus-point they needed to secure their quarter-final berth by the 18th minute, with the best of those tries coming from Reinach as he picked up the ball at the base of a ruck inside the Bok 22 and scythed through a gap in the defence.
Faced with a lone defender, Reinach chipped the ball ahead and collected his own kick for one of the great individual scores of the tournament so far.
Canada were at times their own worst enemy and went a man down on 36 minutes when Larsen showed too much enthusiasm at a ruck and his shoulder connected with the neck of Bok prop Thomas du Toit.
But to their credit, they came out looking much more assured in the second half despite their numerical disadvantage, and after a succession of penalties won, some poor defence from Jantjies allowed Heaton to score his first international try.
It should have been his second after he had dropped the ball over the tryline in Canada’s defeat to Italy earlier in the competition.
The Boks were kept scoreless for 15 minutes in the second half before Brits showed excellent strength and some quick feet to barge over the line.
Willemse, parachuted into the squad as an injury replacement for Jesse Kriel, later scored his maiden test try.
"Very tough, we couldn't even get our hands on the ball for that first 30 minutes or so, and when they had it they did some damage," Canada captain Tyler Ardron said.
"But I felt we grew into the game, and in that last 50 we put in a better performance.
"It's never helpful to get a red card. I think we would have rather had the 15 out, there but we pulled together."