Sources told ESPN that the deal includes a $7 million club option for 2022 and has $13.55 million in guaranteed money, including the buyout option. Vazquez will make $2.85 million in 2019, $4.2 million in 2020 and $6.25 million in 2021, according to sources.
The 27-year-old Vazquez, a ninth-round draft pick in 2008 who has spent his entire career with the Red Sox, hit .290 with five home runs and 32 RBIs in 99 games (85 starts) during the 2017 season. He excelled in the second half of the season, hitting .346 after July 29.
"I feel awesome here in Boston," Vazquez said. "It's a great team, a great staff. I came (up through) the minor leagues here and it feels like a family here so it feels good."
He is expected to begin this season as the team's starting catcher but will share playing time with Sandy Leon.
"I still feel that on a daily basis we're going to make decisions based on matchups and how they fit in the lineup," Red Sox manager Alex Cora said.
Vazquez has thrown out 42 of 100 attempted base stealers in 211 career games, the highest percentage of any catcher since 1987.
"This is a kid that he's worked hard at it," Cora said. "I know him from back home (in Puerto Rico) and, all sentiments apart, I think this is great. This is a guy that he can catch . I think he's a good hitter."
Red Sox ace Chris Sale applauded the move.
"That's huge," Sale said. "He's a younger guy, too, so having him around, he's been around a while, around here a while, so we all love him. Well worth it. He earned it, every last penny of it."
The Associated Press contributed to this report.