Hafner, who played 10 years for the Indians before joining the Yankees in the off-season as a free agent, went deep in his first at-bat against his ex-teammates, giving New York a quick 3-0 lead in the first inning.
The Indians battled back with three runs of their own in the bottom of the frame, but Hafner delivered an RBI single in third -- putting New York ahead to stay -- while Cano went on to supply solo shots in the fifth and sixth innings.
The New York second baseman finished 3-for-4 with four runs scored while Vernon Wells also provided three hits as the Yankees took the opener of a three-game set.
Hiroki Kuroda (1-1) earned the win, yielding three runs on five hits over 5 1/3 frames.
Tribe starter Ubaldo Jimenez (0-1) was torched for seven runs over just 4 1/3 innings, allowing seven runs on seven hits.
Mike Aviles hit a two-run homer for Cleveland.
Video of Victoria’s Secret models trying to 'twerk' hits Instagram
Megyn Kelly: Santa Claus and Jesus are both white men