MINNEAPOLIS (AP) -- The first and second time through the batting order hasn't been a problem for Luis Mendoza. It's that third trip through that has given him trouble.
That wasn't the case Friday night.
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 Minnesota Twins 4-3.
''I'm just glad to stay longer,'' Mendoza said. ''It was my first time going eight innings in the big leagues. I just tried to keep going.''
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.
Jonathan Broxton allowed two runs in the ninth, but got Trevor Plouffe to foul out to end the game and earn his 20th save.
''Piece of cake,'' Royals manager Ned Yost said with a grin.
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.
''We gave ourselves a chance at the end. We just needed another big hit and we were short,'' Twins manager Ron Gardenhire said.
The American League-worst Twins lost their third straight and are 2-7 in their last nine home games.
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.
The 28-year-old righty got his first win since May 13, and first as a starter since April 26.
''Earlier in the year he was really struggling the third time around,'' Yost said. ''He just waltzed right through them tonight. They couldn't go up there the third time around just sitting on one pitch.''
Yost is used to things getting interesting when Broxton comes in. But in the end, the Royals usually come out on top.
Broxton is 20 for 23 in save opportunities and the Royals are 31-1 when leading after eight innings.
''It's always been my experience that good closers know how much they got to work with,'' Yost said. ''He's been a guy that will bend a little bit in these situations, but very seldom does he break. That's his job. You let him get his job done.''
Making his second start of the season, Brian Duensing (1-4) couldn't pick up the Twins' struggling rotation.
The converted reliever allowed three runs and eight hits and was removed after allowing three straight hits to start the fifth. Twins starters are 3-9 with a 5.80 ERA at Target Field over Minnesota's last 13 home games.
The Royals are 32-25 over their last 57 games and appear to only be getting better as their young hitters improve.
After a 12-game skid early, Kansas City has a legit shot of reaching .500 by the All-Star break.
''We just need to keep pushing,'' third baseman Mike Moustakas said. ''It's a big series here and we need to stay consistent.''
Perez made his 2012 debut one week ago after returning from the disabled list with a torn meniscus in his left knee. He has two home runs and five RBIs in five games.
Alcides Escobar, Kansas City's 25-year-old shortstop, had two hits and scored a run. Escobar is 9 for his last 13 and leads all shortstops with a .318 batting average.
Hosmer's infield RBI single in the seventh proved to be the winning run.
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.
Ryan Doumit had an RBI single for the Twins.
Before the game, Doumit signed a new $7 million, two-year contract with Minnesota. 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 allowed no runs over 1 1-3 innings. ... The Royals will promote LHP Tommy Hottovoy for Saturday's split day-night doubleheader 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.