Russia pushed the pace of play early, but Canada's power play allowed them to keep it a one-goal game and trail the host team by one goal, 3-2, after one period.
Russia's Alexander Khokhlachev and Kirill Dyakov each had a goal and an assist, and Nail Yakupov also had a goal, his second of the tournament.
Khokhlachev opened the scoring when his low shot from the right circle squeezed under the right pad of Canada goalie Jordan Binnington just 3:31 into the period.
After a roughing penalty on Canada's Boone Jenner, Yakupov made it 2-0 just 1:26 later when he played the puck off the right wall, skated to the net and took a return cross-ice pass from Albert Yarullin for a back-door tap-in goal at 4:57.
A penalty to Yevgeni Mozer allowed Canada to get on the board. Andrey Makarov stopped Ryan Murphy's shot from the point, but as Russia tried to clear the puck, it bounced off Mark Scheifele and went to Nugent-Hopkins. His shot from the high slot beat Makarov at 6:58.
Any momentum gained, however, was lost 56 seconds later when Dyakov scored. Vladimir Tkachev beat Mark McNeill on a faceoff in the right circle, winning the puck back to Dyakov one stride inside the blue line. The Russian defenseman fired a shot that went between the legs of Canada forward Nathan MacKinnon and past Binnington at 7:55.
That marked the end of Binnington's game after allowing three goals on five shots. Canada coach Steve Spott replaced him with Malcolm Subban, who had started the previous five Canada games.
A penalty on Daniil Zharkov allowed Canada to pull within a goal. Murphy's point shot hit the left post and bounced right to Jonathan Huberdeau, who was open just off the right post and scored at 15:51.
Back with more after the second period.
Contact Adam Kimelman at email@example.com. Follow him on Twitter: @NHLAdamK