Shawn Horcoff also scored for the Canadians, who will face Russia in Sunday's final. Russia received a goal and an assist from Ilya Kovalchuk
to top the United States, 3-2, in Friday's other semifinal.
Canada battles the Russians in a rematch of last year's gold medal game, which Russia took, 5-4, in overtime. The U.S. is set to battle Sweden for bronze on Sunday.
Devils forward Travis Zajac
will seek gold with Team Canada in his first trip to the World Championship. Devils defenseman Johnny Oduya saw his tournament come to an end after posting two goals and an assist in four games with Sweden.
Canada built a 3-0 lead before Sweden's Loui Eriksson broke up Dwayne Roloson's shutout bid 6:14 into the third period.
Roy scored seven minutes into the contest. Horcoff made it 2-0 midway through the second, and Roy notched his second of the game just 45 second later on a power play.
Dustin Brown drew first blood in Team USA's semfinal matchup, but Russia surged ahead on goals by Kovalchuk and Alexander Frolov. U.S. forward Kyle Okposo tied the contest at 2, but Konstantin Gorovikov's power-play tally broke the stalemate with 1:47 remaining in regulation.
Russia is looking to secure back-to-back gold medals for the first time since 1989 and 1990.