Navarro will make $3 million next season and $5 million in 2015. The contract's completion is contingent on the free agent passing a physical.
Several hours after announcing the deal, the Blue Jays said they failed to offer a 2014 contract to catcher J.P. Arencibia, who became a free agent.
Navarro batted .300 with a career-high 13 home runs and 34 RBIs in 89 games for the Chicago Cubs last season. The 2008 All-Star has not played more than 89 games in a season since 2009 because of injuries.
Navarro will turn 30 in February. His signing likely means the Blue Jays will part with slugger Arencibia, who had a disappointing 2013 season.
A 10-year veteran, Navarro has also played for the Rays, Yankees, Dodgers and Reds. He is a .251 career hitter.
Navarro will make a donation to the Jays Care Foundation as part of the deal.
Arencinbia, who would have been eligible for arbitration for the first time, hit .194 this year with 21 homers and 55 RBIs in 474 at-bats.