Wainwright had been eligible to become a free agent after the World Series.
The new agreement, first reported by foxsports.com, was confirmed by a person familiar with the negotiations who spoke on condition of anonymity because it had not yet been announced. The Cardinals scheduled a news conference for Thursday at their spring training camp in Jupiter, Fla.
A 31-year-old right-hander, Wainwright was 14-13 with a 3.94 ERA last year after missing the Cardinals' World Series championship season in 2011 because of elbow surgery.
Wainwright was 20-11 with a 2.42 ERA in 2010 and was an NL All-Star.
More Sports Headlines
Hunting season outlook surprisingly good Pick of the Week: Seep Lakes Rookies Dewar, Skoleski have been impressive for Silvertips early in season Seahawks hoping Lynch can play versus Bengals Arrieta, Cubs silence Pirates 4-0 to win NL wild-card game AquaSox announce their 2016 schedule NFL approves more international games, some outside England Floods force LSU-South Carolina to be moved to Louisiana
Our new comment system is not supported in IE 7. Please upgrade your browser here.