Hafner, 35, batted .228 with 12 home runs and 34 RBIs in 64 games for the Indians last season. Cleveland cut ties with Hafner in October, choosing to pay the left-handed hitter a $2.75 million buyout instead of a $13 million option for the '13 season.
The owner of 201 home runs over 11 Major League seasons, Hafner has not played the field since 2007. As a full-time DH with the Yanks, he'll essentially fill the role envisioned last season for Raul Ibanez.
The Yankees have also been in the market for a right-handed hitter who can play some outfield and hit left-handed pitching well, a role filled the past two seasons by Andruw Jones, suggesting that Hafner would primarily be asked to play against right-handers.
Hafner has been limited to an average of 86 games per season over the past five years, and has struggled against left-handed pitching. However, dating back to 2008, Hafner has hit .269 with a .371 on-base percentage against right-handed pitching.
Last year, the Yanks and Indians held discussions about a preseason trade that could have sent Hafner to New York in a deal for pitcher A.J. Burnett, but the talks stalled and the Yankees sent Burnett to the Pirates instead.
To make room on the 40-man roster, the Yankees designated outfielder Russ Canzler for assignment.
Bryan Hoch is a reporter for MLB.com. Follow him on Twitter @bryanhoch and read his MLBlog, Bombers Beat. This story was not subject to the approval of Major League Baseball or its clubs.