Mark Scheifele and Jeff Skinner scored to lead Canada to a 2-1 win over Germany in quarter-final action Thursday at the world hockey championship.

Scheifele opened the scoring on Canada's first power play of the game and Skinner scored in the second period as Canada overcame a fired-up German team and a deafening sold-out crowd at Lanxess Arena in Cologne.

Canada will face Russia in Cologne in Saturday's semifinals.

Both teams traded chances in a high-tempo first period as the Germans, who beat Latvia in a shootout Tuesday to qualify for the medal round for a second straight year, weren't afraid to play a physical game against Canada.

Scheifele finally put the two-time defending champions on the board with 2:49 to play in the opening frame when he roofed a Ryan O'Reilly pass from behind the net over sprawling German netminder Philipp Grubauer.

In the second period, Canada outshot Germany 20-0 before Dennis Seidenberg directed a puck on Calvin Pickard in the dying seconds. Skinner scored his fourth goal of the tournament to give Canada some insurance, converting a rebound off a shot from Mike Matheson with 1:59 to play in the second.

After their comeback win on Tuesday, the Germans came out with renewed vigour in the third, determined not to leave the tournament without a fight. They generated two power plays, then Yannic Seidenberg got the Germans on the board on a short-handed breakaway with 6:39 left in regulation time.

Unlike Tuesday's game against Latvia, the Germans were not able to get the late equalizer as Canada survived a score from the co-hosts.

Final shots in the game were 50-20 in favour of Canada.

Finland will take on Sweden in the other semifinal Saturday after a 2-0 upset over the United States, which finished first in Group A in the preliminary round.

The Swedes advanced with a 3-1 win over Switzerland.