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
Snohomish mixed martial artist returns to her first love Mariners beat Twins 4-3 in 11 innings Charles scores 29 points, Liberty beat Storm 78-62 Park wins Women's British Open, captures 4th different major Perry wins 2nd straight Champions Tour's 3M Championship Merritt shoots 67 to win Quicken Loans National by 3 shots Triple Crown winner American Pharoah wins $1.75 million Haskell Invitational Bills' Ryan names Incognito starting left guard
Our new comment system is not supported in IE 7. Please upgrade your browser here.