MINNEAPOLIS -- Erik Kratz had played in only five games for Kansas City since being acquired from Toronto in a trade on July 28.
But the big guy always stayed ready and that discipline paid off Monday night to keep the Royals rolling.
"You put your work in before the game as a bench guy to be ready to go in," Kratz said. "Some people could say well, Salvi plays every day, so why not take a day off? In my opinion, what's the point of taking a day off if that might be the day you come in and play?"
Vargas (10-5) allowed one run on four this and struck out three, but had his scoreless innings streak snapped at 17 when Oswaldo Arcia hit a solo homer in the seventh. Perez had two hits and two RBIs before leaving in the seventh because of discomfort in his right knee, helping the Royals win for the 21st time in 26 games.
Kansas City extended its lead over the idle Detroit Tigers in the AL Central to two games.
Trevor May (0-2) gave up three runs on seven hits and walked four in 4 2/3 innings for the Twins.
When Perez left, Kratz came in as a pinch hitter and broke his bat on a pitch from Anthony Swarzak, but still managed to muscle it over the wall in left field for a 4-0 lead. Kratz added a solo shot to center in the ninth for his first multihomer game.
"It's great to help the team out when you do get in there for any bench guy," Kratz said.
Greg Holland came on for his 38th save in 40 tries. Josh Willingham had three hits and Alex Gordon and Billy Butler each had two for the Royals, who have won eight straight series for the first time since 1991.
May made his major league debut on Aug. 9, and it was a rough one. He walked seven batters in two innings and gave up four runs. He breezed through four innings of his home debut, but walked the bases loaded in the fifth.
Perez followed with a two-run single and Butler added an RBI single to give the Royals a 3-0 lead.
That was enough for Vargas, who has dominated the Twins this season. He retired 10 in a row from the second through sixth while his offense built him a cushion.
"Salvi's a huge part of our team, but we have to keep him healthy and keep him in it for the long haul," Vargas said. "For Kratz to come in and step up and go big fly twice was pretty nice, especially when they were able to extend the game a little bit there. Those two home runs really counted."
Royals: Perez is day to day with a sore knee. Manager Ned Yost said Perez tweaked a tendon in his knee while running the bases in the fifth inning, but was removed purely as a precaution.
Twins: Byron Buxton, one of the top prospects in baseball, flew to Fort Myers, Florida, to begin his recovery after a nasty outfield collision at Double-A New Britain. GM Terry Ryan said Buxton had a stiff neck and some headaches, but nothing more serious. Ryan said he doubts Buxton will play again this season.
"We're all fortunate it ended up the way it ended up," Ryan said. "We've seen collisions in our day, but that one ranked right up there."
Twins manager Ron Gardenhire didn't stick around very long. When plate umpire Chris Segal called Joe Mauer out on strikes in the first inning, the mild-mannered first baseman argued that he fouled the third strike and it hit the dirt before Perez caught it. Segal disagreed, and Gardenhire came to Mauer's defense before returning to the bench. Moments later, Segal ejected Gardenhire after the conversation apparently continued from the dugout. It was the fifth time this season and 72nd time in his career that Gardenhire was ejected.