Grichuk, 27, was set to be a free agent after the 2020 season.
"I love the city. I like the direction the team is going,'' Grichuk said. "I see the vision. I see a lot of young, talented players that can be very impactful. They have a vision, and I want to be a part of it.''
Grichuk slashed .245/.301/.502 last season and belted a career-high 25 home runs. The .201 difference between his slugging percentage and OBP was seventh highest in MLB.
"The offense has always stood out,'' Blue Jays general manager Ross Atkins said of Grichuk. "He's always performed. He's always hit the ball hard. He's always hit it far, and usually, it goes over the fence at a pretty good rate. In our view, he's been an above average defender, and those are hard things to piece together.''
Grichuk had agreed in January to a $5 million, one-year contract. The new, superseding deal includes a $5 million signing bonus payable in five equal installments on July 1 and Oct. 1 this year, April 1 and July 1 in 2020 and April 1, 2021. Grichuk gets salaries of $7 million this year, $12 million in 2020 and $9,333,333 in each of the final three seasons.
His 2023 salary would increase by $1 million if he has 1,200 plate appearances in the previous two seasons and by another $500,000 each for 1,250 and 1,300 plate appearances.
The agreement was first reported by Sportsnet.
Grichuk and Lourdes Gurriel Jr. are now the only two players with guaranteed money beyond this season for the Blue Jays.
The Associated Press contributed to this report.