Beltran, 36, hit .296 with 24 home runs and 84 RBIs in 145 games this past season for the NL champion St. Louis Cardinals.
Beltran took $3 million less to sign with the Yankees, sources told ESPNNewYork.com's Andrew Marchand. Beltran had an offer for three years and $48 million with another club. A source with knowledge of those discussions said Beltran was "down the road" with that team.
Beltran met with the Arizona Diamondbacks in Phoenix earlier this week, when the team made a three-year offer exceeding $45 million, The Arizona Republic reported Friday.
At 7 p.m. ET, Yankees general manager Brian Cashman called and the two sides -- who have been talking the whole offseason -- agreed to the deal over the next two hours.
The pact with Beltran, which comes on the same day former Yankees second baseman Robinson Cano agreed to a 10-year, $240 million deal with the Seattle Mariners, marks the latest addition to a revamped lineup in the Bronx.
Beltran famously asked the Yankees if they would take him on a discount when he signed his seven-year, $119 million contract with the Mets in 2005. The Yankees declined.
Beltran has continued his late-career surge during the past two seasons, making back-to-back All-Star teams the last two years to strengthen his case for the Hall of Fame.
The Yankees had sent out signals that they wouldn't be willing to go to three years on a deal for Beltran, but they relented to get an agreement done in advance of the winter meetings, which begin Monday in Orlando, Fla.
Beltran's wife, Jessica, acknowledged his return to New York late Friday night, tweeting, "Back to NY!"
With Beltran, Cano, Curtis Granderson ( New York Mets) and Mike Napoli (Boston) all reportedly reaching deals Friday, Shin-Soo Choo is easily the top hitter left on the free-agent market. Nelson Cruz and Kendrys Morales are behind Choo as potential targets for teams in search of an offensive upgrade.
Information from The Associated Press was used in this report.