The Red Sox obtained the left-handed slugger from San Diego in a December trade that sent three prospects to the Padres, but the two sides couldn't agree on a long-term deal at the time.
The Boston Globe reported the agreement includes a $6 million signing bonus and $21 million per year from 2012-16. Gonzalez will receive $21.5 million per season from 2017-18, the report said.
"Very grateful for this opportunity,'' Gonzalez told reporters at a Fenway Park news conference. "Like I said back in December, I'm really excited about being able to play here for the next seven years, hopefully longer, and I just want to thank John Henry and the whole front office for this extension.
"I'm really excited about being here and winning some championships."
In his seven-plus major league seasons, Gonzalez boasts a .284 batting average with 169 homers and 532 RBI in 869 games.
Selena Gomez drops F-bomb, walks off stage during Jingle Ball performance
Trader Joe's: Car crashes into Long Island store, injuring 11