The first baseman was arbitration-eligible for the first time and would have received a huge increase over the $525,000 he made last season, when he led the Reds to their first playoff appearance in 15 years.
The deal gives the Reds some budget certainty for the next three years. The 27-year-old Votto doesn't have to argue over salary every year.
"I think it gives me the opportunity to avoid arbitration and to also just concentrate on playing in the next three years," Votto said in a conference call. "It has absolutely nothing to do with getting to free agency or that, although a lot of people would interpret it that way. I can't imagine playing for another team right now."
Last month, the defending NL Central champions agreed to a $51 million, six-year deal with right fielder Jay Bruce, another one of the team's young stars. Votto was more interested in the shorter deal.
"I wanted three [years] and I think the team wanted three," Votto said. "It worked out well for me."
However, Bray and the Reds have an agreement at $645,000 that had not yet been announced.
Votto was an All-Star for the first time last season, finishing second in the league with a .324 batting average and third with 37 homers and 113 RBIs. He led the league in slugging percentage and was the most consistent hitter in the NL's top offense.
The Reds led the NL in batting average, runs, hits, total bases, homers, RBIs and slugging percentage. It was only the third time since 1900 that Cincinnati topped the league in average, homers and RBIs.
Votto gets a $6 million signing bonus, of which $2.5 million is payable upon approach, $1.5 million in 2012 and $2 million in 2014. He receives salaries of $5.5 million this year, $9.5 million in 2012 and $17 million in 2013.