The 36-year-old Clark played for Arizona from 2005-2007 and had a prominent role on the 2007 NL West champions. He left after that season to sign with San Diego but returned to the Diamondbacks last July. Clark hit .225 with three home runs and 24 RBIs in 108 games with San Diego and Arizona last year.
"We are pleased to retain Tony," Diamondbacks general manager Josh Byrnes said in a statement. "His power can impact the game either as a pinch-hitter or as a starter. His leadership and experience watching our club evolve over the last several years will help us tackle our next set of challenges."
Clark is a .263 career hitter with 247 home runs and 813 RBIs over parts of 14 seasons with Detroit, Boston, the New York Mets and Yankees, Diamondbacks and Padres.
His 55 home runs with Arizona rank seventh in franchise history.