Updated

Wade Miley pitched seven sharp innings, John McDonald drove in the first run with a bunt single and the Arizona Diamondbacks beat the Kansas City Royals 2-0 Sunday.

Miley (5-1) limited the Royals to five hits while throwing 99 pitches. The rookie walked two and struck out three, sending Kansas City to its 17th loss in 22 home games this season.

David Hernandez and J.J. Putz each pitched an inning to finish off the shutout. Putz earned his ninth save in 11 opportunities.

Jeff Francoeur had four of Kansas City's seven hits to match his career high. It was Francoeur's 10th four-hit game and first since Aug. 23, 2011, at Toronto.

Paul Goldschmidt led off the Diamondbacks fifth with a double, stopped at third on Aaron Hill's single and scored on McDonald's bunt single that first baseman Eric Hosmer failed to field cleanly.

Right-hander Nate Adcock (0-2), just recalled from Triple-A Omaha and making his first start of the season, held Arizona to five hits and one run over five innings.

The Royals got four runners to third base — Francoeur in the second and fifth, and Billy Butler in the fourth and eighth — but failed to get them home. They went 0 for 5 with runners at third and 0 for 7 with runners in scoring position.

Francoeur tripled off the right-field wall with two outs in the sixth for Kansas City's only extra-base hit. Alex Gordon grounded out to end the inning.

The Royals' best chance to score came in the fourth. Butler led off with a walk and advanced to second on Francoeur's single before Gordon moved up both runners with a groundout. Miley, however, pitched out of danger by retiring Hosmer on an infield popup and Brayan Pena on a grounder.

The Diamondbacks manufactured a run without a hit in the eighth. Gerardo Parra led off with a walk and Ryan Roberts sacrificed. Greg Holland's wild pitch allowed Parra to reach third and Justin Upton hit a sacrifice fly to right.

The Royals were shut out for the fourth time. They are 2-8 when the opponent starts a left-hander.

NOTES: Royals manager Ned Yost juggled his lineup again, batting 2B Johnny Giavotella leadoff and 3B Mike Moustakas third for the first time this season. Giavotella became the seventh Royals player to bat first in the first 40 games. ... The Royals open a three-game series Monday at Yankee Stadium, their only trip this year to New York. RHP Felipe Paulino, who beat the Yankees on May 5 and did not allow a hit until the fifth inning, will start the opener. The Yankees will counter with RHP Hiroki Kuroda. ... The Diamondbacks return home Monday to host the Dodgers. In a May 14 game at Los Angeles, LHP Clayton Kershaw threw a pitch behind Arizona ace Ian Kennedy. When Kershaw batted in the fifth, Kennedy came in with a first-pitch fastball that made Kershaw bail out. Both teams were issued a warning after that by the plate umpire. "I don't have any animosity," Diamondbacks manager Kirk Gibson said. "I just play baseball. It's just part of the game. Nobody even got hit. I don't think anybody was throwing at anybody. The league report says they weren't throwing at each other. If people get hit, it's no big deal. I don't care." ... Arizona RHP Daniel Hudson, a 16-game winner last season who is on the disabled list with a right shoulder impingement, will make a rehab start Monday for Triple-A Reno.