Hafner hit a three-run homer in the first inning off Ubaldo Jimenez (0-1) and added an RBI single in the third. Cano connected in the fifth and sixth for the Yankees.
Hiroki Kuroda (1-1) shook off a shaky, 34-pitch first and showed no signs of being bothered by a bruised right middle finger as the Yankees finally won a home opener after losing their own and Detroit's last week.
Mike Aviles hit a two-run homer in the eighth for Cleveland.
RED SOX 3, ORIOLES 1
BOSTON (AP) — Daniel Nava hit a three-run homer, Clay Buchholz pitched seven shutout innings and the surprising Red Sox won their ninth straight home opener, beating Baltimore.
Nava broke open a scoreless duel between Buchholz (2-0) and Wei-Yin Chen (0-1) in the seventh inning with his second homer in two days.
The Red Sox are off to a strong start at 5-2 under new manager John Farrell.
Buchholz gave up three hits and three walks and struck out eight.
Andrew Bailey blanked the Orioles in the eighth before Joel Hanrahan allowed a solo homer by Adam Jones in the ninth, but got his third save.
ROYALS 3, TWINS 1
KANSAS CITY, Mo. (AP) — Ervin Santana pitched eight strong innings, Alcides Escobar doubled home the go-ahead run and the Royals rallied to beat Minnesota in their home opener.
Santana (1-1), acquired from the Los Angeles Angels on Oct. 31 for minor league left-hander Brandon Sisk, gave up a run and eight singles. He struck out seven, walked one and hit a batter. Santana allowed only four hits after the first inning, when the Twins scored their lone run.
Twins right-hander Kevin Correia (0-1) limited the Royals to five singles and no runs the first seven innings before Lorenzo Cain doubled to right-centre to lead off the three-run eighth. After Chris Getz's sacrifice bunt moved Cain to third, Alex Gordon singled him home to tie the score.
Escobar's double scored Gordon and chased Correia.
RANGERS 5, RAYS 4
ARLINGTON, Texas (AP) — Joe Nathan picked up his 300th career save when he got Ben Zobrist to look at a disputed strike three as Texas beat Tampa Bay.
The Rays scored once in the ninth and had a runner on first with two outs when Zobrist took a full-count pitch and started to take his base. Plate umpire Marty Foster called strike three, and later acknowledged he made the wrong call.
A.J. Pierzynski and Mitch Moreland hit consecutive home runs for the Rangers off Jeremy Hellickson (0-1) on his 26th birthday.
Alexi Ogando (2-0) allowed only one run on three hits but needed 89 pitches to get through 5 1-3 innings.
MARINERS 3, ASTROS 0
SEATTLE (AP) — Joe Saunders rebounded from a rough first start to throw 6 1-3 shutout innings and the Seattle Mariners debuted the new look of Safeco Field by sending Houston to its sixth loss in a row.
Kendrys Morales snapped Seattle's 0-for-14 drought with runners in scoring position by chopping an RBI single in the first and adding an RBI double in the third off Philip Humber (0-2).
Saunders (1-1) and the bullpen made it stand on a cool night with the stadium roof open. He combined with three relievers for the Mariners' second shutout. Tom Wilhelmsen pitched a perfect ninth for his third save.