Gresham turned down contracts of up to four years for $23 million with $12 million fully guaranteed from other teams because he wanted to be back in Arizona. He took less money to have consistency in offense and reset his market for next year, a source told ESPN's Adam Schefter.
Terms for Gresham's contract weren't disclosed by the Cardinals.
"Just that he loves the culture of our football team and what we speak for," Cardinals head coach Bruce Arians said.
Gresham, who had back surgery in March 2015 and signed with the Cardinals just before training camp, is coming off the least productive season of his career with 18 catches for 223 yards and one touchdown. His role, however, was different with the Cardinals than it had been over five seasons with the Cincinnati Bengals in that Gresham was asked to block more by coach Bruce Arians rather than be a receiving threat. His best game with the Cardinals came on "Monday Night Football" in Week 7, when Gresham had 62 yards on four catches.
"Just fired up for him to get a whole offseason under his belt and not have a surgery in July and try to play in September," Cardinals quarterback Carson Palmer said. "We're going to see a whole different animal this year. I can't wait. A whole year in this offense. A whole year training with (Cardinals strength and conditioning coach) Buddy (Morris), a whole year to work with him, just huge for us."
The 27-year-old Gresham, who was a first-round pick in the 2010 draft, has 298 career receptions for 2,945 yards and 25 touchdowns.
The Cardinals on Monday also announced they had re-signed defensive tackle Red Bryant to a one-year contract.
ESPN Cardinals reporter Josh Weinfuss contributed to this report.