Wainwright was set to become a free agent after this season when he will make $12 million under a team option. The right-hander's new deal will begin in 2014, according to multiple media outlets.
The 31-year-old Wainwright went 14-13 with a 3.94 ERA last season after missing the entire 2011 campaign because of an elbow injury.
Wainwright has spent his entire eight-year career with the Cardinals, going 80-48 with a 3.15 ERA in 214 games, including 151 starts. He went 20-11 with a 2.42 ERA in 2010 and was an NL All-Star.
Information from The Associated Press was used in this report.