Veteran infielder David Freese and the Pirates have agreed to a one-year deal for $3 million, the team announced Friday.

The 32-year-old Freese, an All-Star with the Cardinals in 2012, hit .257 with 27 doubles, 14 homers and 56 RBI last year with the Angels.