The 21-year-old had 10 goals and 10 assists in 75 games for the Canucks in 2017-18, setting career highs in games played, goals, assists, points and penalty minutes. His 155 hits led all Canucks forwards, while his 46 penalty minutes ranked fourth on the team.
In 140 games over three seasons with the Canucks, the 6-foot-1, 229-pound right wing has 34 points (17 goals, 17 assists) and 93 penalty minutes.
Virtanen was selected by Vancouver in the first round, sixth overall, at the 2014 draft.
"We're pleased to sign Jake to an extension," Canucks general manager Jim Benning said in a statement. "He adds physical presence and speed to our lineup and can help create offensive chances when going hard to the net. We look forward to seeing Jake take the next step in his game and consistently contribute to the team's success."