Jake Lamb got an RBI single in his major league debut.
Unfortunately for Arizona, that third-inning hit was the last for the Diamondbacks all night.
Jeremy Guthrie retired the final 19 batters in Kansas City's first complete game this season, and the Royals won 6-2 on Thursday for a three-game interleague sweep of the Diamondbacks.
"We were swinging the bats good the first three innings," Arizona manager Kirk Gibson said. "We had a lot of opportunities. We didn't capitalize as good as we could have. We had only two runs, then he shut us down."
Arizona right fielder David Peralta said Guthrie threw more cutters to the Diamondbacks' left-handed hitters as the game went on.
"He tried to get it in and jam us," Peralta said. "We were trying to make an adjustment. It didn't work this time for us, it worked for him."
Guthrie (8-9) allowed seven hits, struck out four and walked none in his eighth career complete game.
"I think it's the pitcher's goal every time is to get as deep as they can," he said. "I haven't done that very well, especially the last couple of months. So it's nice to have a high pitch count out there early but be able to settle in and get through some quick innings."
Alex Gordon hit a two-run homer and Alcides Escobar had a two-run single for the Royals, who have won four in a row and 12 of 15 to pull within 2 1/2 games of first-place Detroit in the AL Central.
Vidal Nuno (2-8) lasted just four innings for Arizona, allowing five runs and seven hits. The left-hander is 0-3 with a 4.05 ERA in six starts since he was acquired in a trade with the Yankees that sent Brandon McCarthy to New York.
"I kept on leaving that ball up," Nuno said. "They found a way to get the ball in play and, sure enough, they scored five runs."
Billy Butler led off the second with a double to the left-field corner, and Gordon drove the next pitch from Nuno just inside the right-field foul pole for his 10th homer.
Kansas City (60-53) moved seven games above .500, matching its season high. It went 5-1 on a trip to Oakland and Arizona and is 33-26 on the road this season.
Lamb's line drive over third base cut the Royals' lead to 4-2.
"It was nice to get that hit out of the way," he said, "calm the nerves a little bit."
Royals: First baseman Eric Hosmer, on the 15-day disabled list since Saturday with a stress fracture of the third finger of his right hand, is to have no baseball activity for two weeks, then be re-evaluated.
Diamondbacks: Outfielder A.J. Pollock, out for two months with a broken right hand, is 2 for 13 (.154) with a double and a run scored in four rehab games with Triple-A Reno. ... Right-hander Daniel Hudson, recovering from a second Tommy John surgery, made his first rehab appearance Tuesday, allowing a run in one inning for the Diamondbacks' Arizona Rookie League team.
Royals: Kansas City opens a seven-game homestand against Bay Area foes, three against San Francisco and four against Oakland. A pair of left-handers go in the opener Friday night, Madison Bumgarner (13-8, 3.21 ERA) for San Francisco, Jason Vargas (8-5, 3.69 ERA) for the Royals.
Diamondbacks: Arizona wraps up a 10-game homestand with a three-game weekend series against Colorado, matching the bottom two teams in the NL West. In Friday night's series opener, the Diamondbacks go with right-hander Chase Anderson (6-4, 3.19 ERA) and the Rockies counter with lefty Tyler Matzek (2-6, 5.31 ERA).
Guthrie has had a streaky season. Prior to his current three-game winning streak, he dropped three straight, allowing 17 earned runs in 14 innings. Before that, he was 3-0 in four starts with a 2.70 ERA. Guthrie won his first two starts of the season, and then was winless in his next 11.
The addition of Lamb gives Arizona eight position players who started the season in the minors. Five of them were in the lineup Thursday night.
Escobar made a slick fielding play in the seventh, racing to his left to snag Roger Kieschnick's grounder to shortstop, and then spinning 360 degrees before throwing the runner out at first.