Stewart confirmed the move Thursday on Twitter, posting that he is "glad to be healthy and back with the Cubs."
A person familiar with the agreement said it's for one year at $2 million if Stewart makes the opening-day roster, and he can earn an additional $500,000 in bonuses. The person spoke on condition of anonymity because the deal had not been announced. Several media outlets had reported the terms.
Stewart batted .201 with five homers and 17 RBIs in 55 games this year - his first in Chicago - before having season-ending left wrist surgery. He had a $2,237,500 salary and became a free agent when the Cubs declined to tender him a 2013 contract before last Friday's deadline.
The 27-year-old Stewart, selected 10th overall by Colorado in the 2003 amateur draft, is a .232 career hitter with 59 home runs and 204 RBIs in 487 games over six major league seasons.
In other news, the Cubs announced they will introduce reliever Kyuji Fujikawa at a news conference Friday. He agreed to a $9.5 million, two-year deal last weekend.