Descalso will receive a guaranteed $3.6 million over the two seasons with an opportunity to earn an additional $1 million in performance bonuses, said his agent, Steve Canter.
The 28-year-old versatile utilityman has played first base, second base, third and shortstop in the majors. He hit .243 with a .654 OPS over parts of five seasons in St. Louis, and became a free agent when the Cardinals nontendered him in December.
New Rockies general manager Jeff Bridich, trying to rebound from a 96-loss season, had traded infielder Josh Rutledge to the Los Angeles Angels last week but resisted the temptation to deal away Troy Tulowitzki and Carlos Gonzalez.
"It would be easy for somebody in my shoes, a brand new GM, a young GM, to want to come in and make a splash, do something sexy," Jeff Bridich said Tuesday during a teleconference. "I fought that urge, but I'm not going to say it wasn't there.
"We've been close-ish to a few things. But it hasn't happened, hasn't worked out. We're not going to panic. ... We have to remember the type of talent that we have here."
Bridich said the Descalso signing wasn't so much a direct response to sending Rutledge to the Angels for righty Jairo Diaz. The Rockies actually had their eye on Descalso, and could be asked to play some outfield or possibly catch as well.
"I'm anticipating filling a variety of different roles, bouncing around the infield and doing whatever I can to help the team win on a given night, if that's playing third, second, short, first, wherever they ask me to play," said Descalso, who will make $1.5 million next year and $2.1 million in 2016. "That's kind of the outlook I have going into this thing."
Descalso can earn up to $500,000 annually in performance bonuses based on plate appearances: $50,000 for 250, $100,000 for 300, $150,000 for 350 and $200,000 for 400. He hit .242 with 10 RBIs in 104 games last season.
He hit .214 in 84 postseason at-bats with the Cardinals, but achieved a highlight in Game 5 of the 2012 National League Division Series when he homered, went 3-for-5 and contributed a game-tying single off Drew Storen in the ninth inning of St. Louis' come-from-behind 9-7 victory over the Washington Nationals.
"He's built a reputation in this game as a tough, smart player," Rockies manager Walt Weiss said. "We talk about those things all the time. We're striving to get better and better in those areas, and he's going to add to that."
The Associated Press contributed to this report.