The deal includes a club option for 2009.
Spiezio, 34, revived his career with the Cardinals last season. He signed a minor league contract and made the team as a utility player, making 61 starts and playing five positions. The switch-hitter batted .272 with 13 home runs and 52 RBI in 119 games.
He led the team with eight pinch-hit RBI, including a three-run triple on the final weekend of the season to help St. Louis hang on and win the NL Central title.
The World Series champions' first two moves of the offseason have been retaining key players. Jim Edmonds signed a two-year, $19 million contract last week.