KANSAS CITY, Mo. -- Catcher Sal Perez and first baseman Eric Hosmer homered as the Kansas City Royals whipped the New York Yankees 8-4 on Saturday night.

Perez broke a 3-3 tie in the sixth inning with a three-run homer out to left. Perez's blast with designated hitter Billy Butler and left fielder Alex Gordon aboard on walks came on the second pitch from right-hander David Phelps after Yankees pitching coach Larry Rothschild visited the mound.

The inning included center fielder Lorenzo Cain, who had three hits, tripling and scoring on right fielder Nori Aoki's two-out single.

Hosmer's home run to lead off the seventh was his first since May 5, a span of 130 at-bats without a homer, and his second of the season.

Phelps (1-4), who has lost four straight starts, allowed seven runs and 10 hits in 5 2/3 innings. In his past three starts, Phelps has given up 24 hits and 18 runs in 17 2/3 innings.

Royals left-hander Danny Duffy was staked to a three-run lead but failed to hold it. He couldn't make it out of the sixth when the Yankees scored three runs with two outs.

Designated hitter Carlos Beltran, who was 0-for-9 since coming off the disabled list, doubled in the first run of the inning. Third baseman Yangervis Solarte's two-run single finished Duffy.

Right-hander Aaron Crow (3-1) retired all four batters he faced to pick up the victory.

The Yankees added a run in the ninth. Solarte led off with a double, advanced to third on pinch-hitter Ichiro Suzuki's single and wound up scoring on second baseman Brian Roberts' groundout.

The Royals bunched five hits in the second to score three runs. Butler and Gordon began the inning with doubles. Gordon has 18 RBIs and scored 15 runs in his last 20 games.

Cain and shortstop Alcides Escobar drove in the other runs with singles.

Center fielder Jacoby Ellsbury singled with two out in the first inning to extend his hitting streak to 12 games, the longest by a Yankee this year.

In the Royals' second, Perez doubled to snap an 0-for-12 skid and stopped at third on a single by third baseman Mike Moustakas. Escobar, however, lined out to Phelps, who doubled Moustakas off first to end the inning.

Solarte and Roberts walked in the New York fifth, but the inning ended when catcher John Ryan Murphy fouled out to Hosmer.

NOTES: DH Carlos Beltran, who was hitless in his first seven at-bats after coming off the disabled list Thursday, was dropped from third to fifth in the Yankees' batting order. ... Royals RHP James Shields, who starts Sunday, has surrendered 15 earned runs and seven home runs in 18 1/3 innings in his last three starts. ... Royals LHP Bruce Chen, who is on the disabled list because of a bulging disc, is scheduled to make his second minor league rehab start Sunday for Triple-A Omaha. ... RHP Shawn Kelley, who is on the disabled list because of a strained lumbar spine, threw 19 pitches, 11 for strikes, in a rehab appearance Saturday for the Yankees' Double-A Trenton affiliate. He walked one and struck out two against Altoona. ... The Royals entered Saturday with only 10 home runs in their first 30 home games.