Ruiz hit .255 last season with 26 doubles, a career-high nine home runs and 43 RBIs in 107 games. The Phillies went 57-43 (.570) when Ruiz started. He threw out 15 of 76 potential basestealers (19.7 percent).
Ruiz will earn $1.9 million this season, $2.75 million in 2011 and $3.7 million in 2012. The deal includes a club option for $5 million for 2013 with a $500,000 buyout.
The 31-year-old Ruiz batted a team-high .341 during the 2009 postseason, starting all 15 postseason games. He hit a three-run homer off Dodgers starter Clayton Kershaw in Game 1 of the National League Championship Series.
Ruiz has a .246 batting average with 22 homers and 138 RBIs in four seasons. He was the last Phillies player eligible for arbitration.
The Phillies signed free agent catcher Brian Schneider to a $2.75 million, two-year contract in December.