KANSAS CITY, Mo. -- Zack Greinke was the star power pitcher Monday, but Jeremy Guthrie was the better right-hander this night.

Guthrie pitched superbly into the eighth inning, catcher Salvador Perez homered and doubled, and the Kansas City Royals snapped a four-game losing streak by beating the Los Angeles Dodgers 5-3.

Royals center fielder Jarrod Dyson finished 3-for-3 with two RBIs, a run and two stolen bases.

Guthrie, who won his third consecutive start, was pulled with two outs in the eighth after designated hitter Hanley Ramirez's double scored third baseman Miguel Rojas and pinch hitter Justin Turner, both whom singled earlier in the inning.

"There was never any panic," Guthrie said of the losing skid. "We lost a couple of close games. We recognize if a couple things had gone our way, we would have won a couple of them."

Guthrie (5-6) was charged with two runs on seven hits while walking none and striking out five.

Right-hander Greg Holland logged his 22nd save, but not before yielding a home run to first baseman Adrian Gonzalez to lead off the ninth.

Dodgers right-hander Zack Greinke, who won the 2009 American League Cy Young Award for the Royals, gave up five runs on 11 hits, matching his season high, in 5 2/3 innings. With the Royals going through another rebuilding stage in 2010, Greinke demanded to be traded. The Royals sent him to the Milwaukee Brewers after the season in a six-player blockbuster.

"I was pretty rude on the way out," Greinke said. "They have every right to be mad at me. I haven't really put much thought into it lately. It's been four years, so it's been awhile. They've moved on by now, and so have I. At least team-wise, the fans might be different.

"I don't want to be rude. I felt I had to in order to get traded, and I wanted to get traded. They are playing good now. You knew it was going to take time, and now is the time, it seems like."

The Royals hitters treated Greinke rudely.

"It wasn't good," Greinke said of his performance. "I just really located OK with the fastball, but I had nothing sharp besides that. It was just really bad off-speed, which I think was the problem today to where they didn't even have to respect it. It was like a favor if I threw them an off-speed. That was the main issue. The righties were just crushing the ball."

Shortstop Alcides Escobar, who was acquired in the Greinke trade, stroked a run-producing triple in the sixth, and Dyson's third single brought him home and sent Greinke (9-4) to the showers.

"It's a funny game," Royals manager Ned Yost said. "You go against a guy like Zack Greinke who's had so much success this year. We strung some hits together along with some outstanding pitching (as) we've had the last five or six starts, it's a big win for us."

Dyson, in addition to his offense, robbed right fielder Yasiel Puig of extra bases in the fourth when he collided with the wall while leaping to catch the scorcher.

"I thought (Floyd) Mayweather hit him," right fielder Lorenzo Cain said of the way Dyson collapsed on the warning track.

Said Dyson, "Did I get back up? I'm a tiger."

Perez, who has hit safely in 21 of 23 June games, led off the Royals' second by belting Greinke's first pitch over the left field fence. It was Perez's ninth home run, which ties him for the team lead.

Kansas City added another run in the inning when Dyson's two-out single scored Escobar, who singled and took second on a wild pitch.

The Royals increased their lead to 3-0 in the fifth. Dyson led off with a single, stole second and scored on Cain's single to right.

Guthrie was extremely economical through the first four innings, throwing only 28 pitches, including four in the second and five in the fourth, while facing the minimum number of batters.

Guthrie labored through a 20-pitch fifth inning, which began with singles by first baseman Adrian Gonzalez and left fielder Matt Kemp, who extended his hitting streak to 11 games. Guthrie got out of the jam with a strikeout and two groundouts.

"We really didn't do a whole lot with him early," Dodgers manager Don Mattingly said. "It took us a while to get rolling, it seemed like. If you're swinging early, you want to know what you're going to hit and know what you want to do. It just didn't work tonight. It just took us too long to get going.

"They kept chipping away. (Perez) gets a home run early, gets them on the board. The center fielder (Dyson) chips in with two. The bottom part of their order got us with three or four RBIs."

NOTES: Dodgers LHP Clayton Kershaw will try to duplicate Johnny Vander Meer in his Tuesday start against the Royals. Kershaw threw a no-hitter in his previous start against the Colorado Rockies, striking out 15. Vander Meer is the only pitcher to toss back-to-back no-hitters, June 11 and 15, 1938, for the Cincinnati Reds. ... 2B Omar Infante, who normally bats second for the Royals, was dropped to the sixth slot. Manager Ned Yost said he wanted to put Infante in a better RBI slot in the lineup. 1B Eric Hosmer replaced him in the No. 2 hole. ... Kansas City SS Alcides Escobar, who left Sunday's game with a bruised left shin, was back in the lineup Monday. ... The Dodgers last visited Kauffman Stadium in 2005, when they were swept in a three-game series. They played every other team in the majors since facing the Royals.