If Brian Duensing wants to stay in the Minnesota Twins' rotation he knows he'll need to keep the ball down.

He didn't Friday night and was left scratching his head.

"I've got to find a way to miss down when I miss," he said. "Last year and this year starting-wise for some reason when I miss everything is up in the zone. When that happens you get hit around a lot and hard."

Luis Mendoza allowed one run over a career-high eight innings, Salvador Perez homered, and the Kansas City Royals won their fourth straight, hanging on to beat the Twins 4-3 on Friday night.

Yuniesky Betancourt, Billy Butler and Eric Hosmer added RBIs for the Royals (35-39), who are four games under .500 for the first time since April 16.

Making his second straight start after 30 relief appearances, Duensing (1-4) allowed three earned runs and eight hits and was removed after allowing three straight hits to start the fifth. In a 6-0 loss at Cincinnati last Saturday, Duensing allowed four earned runs, four hits and two walks in three-plus innings.

"It's very frustrating," he said. "There were a lot more negatives than positives, I feel, in this start. Some of the positives were I went longer inning-wise, the ball felt good coming out of my hand. I made some good pitches. The negatives were I left the ball up a lot, a lot of misfires. It's kind of a step forward, but not very far."

With Minnesota's injury-plagued rotation, manager Ron Gardenhire said the left-hander will likely get another start.

"We're trying to stretch Duensing out to see what happens with him and we'll probably do it again, stretching him one more time and see where we're at," he said.

Duensing had to be nearly perfect because the team wasn't able to provide much offense. Minnesota managed just one run and five hits in eight innings against Mendoza before getting two runs off closer Jonathan Broxton in the ninth.

Joe Mauer had two hits and an RBI double in the ninth that cut Kansas City's lead to 4-2. Josh Willingham followed with an RBI groundout. Trevor Plouffe popped out with Mauer on third to end the game.

The American League-worst Twins lost their third straight and are 2-7 in their last nine home games.

After an RBI single by Ryan Doumit in the second, Mendoza (3-4) retired the final 13 batters he faced and 18 of the final 20. He struck out five and allowed one runner to reach second base.

"He did a good job of pitching in," Twins shortstop Brian Dozier said. "When the opportunity presents itself, you've got to come up with big hits and we didn't."

Justin Morneau had two hits for Minnesota and just missed a home run in the seventh when his long fly ball died at the wall in right-center.

Before the game, Doumit signed a new $7 million, two-year contract. The 32-year-old catcher and designated hitter is hitting .272 with seven homers and 34 RBIs in his first season with the Twins.

NOTES: The Royals kicked off an 11-game trip that takes them to the All-Star break. ... Reliever Kyle Waldrop made his season debut for the Twins. He went 1 1-3 scoreless innings. ... The Twins and Royals play a split day-night doubleheader on Saturday to make up for a game postponed on April 28. ... Minnesota's Scott Diamond (6-3) will face Jonathan Sanchez in the first game. In only 10 starts, Diamond leads the Twins in wins and has the lowest ERA in the rotation. Sanchez is 1-3 with a 6.21 ERA and allowed six runs in 5 2-3 innings in his last start. ... Luke Hochevar takes the mound for Kansas City in the nightcap. The 28-year-old threw his second career shutout on Monday against the Rays. The Twins recalled Cole De Vries from Triple-A Rochester to start game two. De Vries was with the Twins earlier this season, going 1-1 with a 4.20 ERA in three starts.