The 35-year-old Winn was released from the Yankees on June 2. A switch-hitter, Winn was hitting .213 with a .300 on-base percentage and .295 slugging percentage in 71 plate appearances with New York.
"I cleared [waivers] yesterday afternoon and my agent said the Cardinals have interest," Winn said Saturday. "It just kind of built from there.
"This is a great place to play, I have played here on the visiting side, and I have always heard very positive things about the organization, about the manager from guys who have played here."
This will mark the 13th season and fifth team of Winn's big league career. He spent 2006-09 playing in the National League as a member of the San Francisco Giants.
Winn has not played in a game since May 22. Manager Tony La Russa said Winn would be available to back up all three outfield positions.
"I guess that will all play out, but kind of back up at all three outfield positions, come off the bench," Winn said of his role. "It is a first-place team, a good team, so I am just trying to blend in and help out any way I can."
Winn joins infielder Aaron Miles as the second veteran the Cardinals have signed for a bench role this week. An All-Star in 2002, Winn has hit .285 with a .344 on-base percentage and a .417 slugging percentage for his career.
Jay was hitting .302 with a .302 on-base percentage and a .442 slugging percentage in 45 plate appearances with the Cardinals.
"Once we saw that Randy had become available, we quickly reached out to him," general manager John Mozeliak said. "He is a veteran outfielder who we think will improve our depth. His versatility and experience should be a real nice fit for our roster."