Fiji (15) 29
Saracens winger Kameli Ratuvou was a constant threat for Fiji
Tries: Leawere, Ratuvou 2, Delasau
Cons: Little 3
Canada (6) 16
Pens: Pritchard 3
Fiji kept in the hunt for a place in the World Cup quarter-finals with a bonus-point win over Canada in Pool B.
Tries from Kele Leawere, Kameli Ratuvou and Vilimoni Delasau helped them into a 22-6 lead.
Canada hit back, with Ryan Smith's try and James Pritchard's third penalty trimming the gap to six points.
But Ratuvou's late try ended Canada's hopes as Fiji stay on course for what is likely to be a winner takes all contest against Wales on 29 September.
The game was always going to be a clash of styles, with Canada relying on their forward strength and a more structured approach to combat Fiji's greater pace, power and skill out wide.
However, Fiji tried to take Canada on with a deliberate game initially, kicking several penalties for touch, and a penalty apiece from James Pritchard and Nicky Little saw the sides level at 3-3 after the early exchanges.
Fiji were making little headway until Saracens winger Ratuvou, playing at full-back for Fiji, injected some pace into the game.
First he sliced through to within a couple of yards of the line before losing the ball in a tackle.
A couple of minutes later he smashed his way through the first line of defence and when Fiji switched play to the right, second row Leawere was on hand to blast over by the posts.
Little converted to make it 10-3 and although Pritchard narrowed the gap with his second penalty after 26 minutes, within two minutes Fiji had stretched their lead as Ratuvou once again stamped his mark on the game.
Number eight Sisa Koymaibole's charge took Fiji within sight of the line and Ratuvou burst over from close range to make it 15-6 at half-time.
The Fijians might be just one place higher than Canada in the world rankings at 12th, but whenever they secured decent possession they looked much more threatening.
When winger Delasau got his hands on the ball veteran Canadian prop Rod Snow was all that barred his way to the line and he stepped him with ease.
Little converted and when Pritchard missed a kickable penalty soon after the writing was on the ball for Canada.
However, they hit back just before the hour mark when Smith slipped Little's tackle to score from close range after a sustained attack, with Pritchard's conversion making it 22-13.
A sweeping Canada attack then ripped the Fijians apart but Mike Pyke's effort was controversially ruled out for a double movement after Canada worked a huge overlap.
But Pritchard trimmed the gap to six points with a penalty and the Canadians came desperately close to completing an unlikely fight back when they mounted a sustained assault on the Fiji line in the closing moments.
However, they turned the ball over after a series of drives by the forwards and Ratuvou showed the despairing Canadian chasers a clean pair of heels to score Fiji's fourth try and wrap up a bonus-point victory.
Fiji coach Ile Tabua:
"We knew it was going to be tough against Canada. These were the two games (Canada and Japan) we were targeting and it came down to the last couple of minutes and eventually our defence held.
"For us the first two games were the important ones. It sets a platform for us in our campaign. We have nothing to lose."
Canada coach Ric Suggitt:
"It's a bit of a heartbreaking loss, when we got so close to the goal line. Virtually half a metre off the goal line the ball spills out then its typical Fijian style rugby, they just pick up the ball and sprint 100 metres for the victory."
Suggit on Pyke's disallowed try:
"We watched it a number of times and I think even the first time he was on the ball he was on the line. Then he's allowed an immediate movement. He did that and he placed it down in the in-goal area. To me that's a try."
Fiji: Ratuvou; Delasau, Rabeni, Bai, Neivua; Little, Rauluni; Dewes, Koto, Railomo, Leawere, Rawaqa, Naevo, Qera, Koyamaibole.
Replacements: Sauturaga, Qiodravu, Talei, Qovu, Daunivucu, Kunavore, Ligairi.
Canada: Pyke; Van der Merwe, Culpan, Spicer, Pritchard; Smith, Williams (capt); Stephen, Biddle, Cudmore; James, Burak; Thiel, Riordan, Snow.
Replacements: Carpenter, D Pletch, M Pletch, Tait, Yukes, Fairhurst, Monro.
Referee: Tony Spreadbury (Eng)