The team announced the agreement Friday. The deal calls for Schierholtz to earn $2.25 million plus an additional $500,000 in performance bonuses.
Schierholtz was traded from San Francisco to Philadelphia last season in the deal that sent Hunter Pence to the Giants at the July 31 non-waiver deadline. He batted .257 with six homers in 114 games.
The Phillies declined to tender Schierholtz a 2013 contract offer, making him a free agent.
The Cubs also said Friday that left-handed pitcher Jeff Beliveau and righty Sandy Rosario were claimed off waivers by Texas and San Francisco, respectively. Left-hander Gerardo Concepcion cleared waivers and was assigned outright to Class A Kane County.