The Cardinals announced the deal before their Grapefruit League opener against the Marlins on Saturday. Martinez is expected to play right field and bat second.
Terms of his contract were not disclosed.
The 30-year-old Martinez led the Cardinals with a .305 average and 163 hits last season, and was seventh among National League batting leaders. He played 887 games in the minors before finally reaching the big leagues, but he’s hit .309 over parts of three seasons since arriving.