The deal is for six years and is worth $5.7 million per year, a source told ESPN.com's Pierre LeBrun.
The deal has a full no-trade clause in the first three years and begins right away, according to the source. There is also a full no-move clause, which pertains only to waivers.
Staal would have been an unrestricted free agent on July 1.
"Marc has been one of the cornerstones of our team since he arrived in New York," general manager Glen Sather said. "His commitment and perseverance to the Rangers, and the game of hockey, has been an inspiration for everyone in the organization, and he has become a role model for young players and veterans alike. We are excited that he will continue to provide that leadership in a Rangers uniform."
The 28-year-old Staal has two goals and six assists this season. He was sidelined by long-term injuries in the 2011-12 and 2012-13 seasons but bounced back to appear in 72 games last season.
The Rangers drafted Staal in the first round, 12th overall, in the 2005 draft.
ESPN.com's Pierre LeBrun contributed to this report.