A left-hander, Vargas lost his first start against the Royals in 2009 and hasn't faltered against them since, going 6-0 with a 2.23 ERA in six starts.
For the Royals, it was the 14th loss in their last 18 games. Eleven of those losses have been by two or fewer runs.
"We're right in every game. It's not like we're getting blown out," Royals reliever Aaron Crow said.
Even so, the Royals sank into fourth place in the American League Central, five games behind the first-place Detroit Tigers. They are three games under .500 for the first time this season.
The Angels, who have won six straight, snapped a 2-2 tie with a three-run seventh inning against relievers Luke Hochevar and Crow.
And a disputed call by an umpire kick-started that game-deciding rally.
Hochevar walked Mike Trout to start the inning and was relieved by Crow. With Albert Pujols at the plate, Trout took off for second. Catcher Salvador Perez's throw was on target, second baseman Chris Getz made the tag and second-base umpire Marty Foster made a safe call.
"I caught the ball. I felt like I got a lot of his body," Getz said. "I felt like I was on him pretty much the whole time while he was sliding in and Marty felt otherwise. He told me that [Trout] kind of went around me and then touched the bag in the back. I told him, I felt like I was on his body pretty much the whole time. He's a good umpire, but I think we all looked at the replay."
Royals manager Ned Yost didn't need to see any TV replay. He bounced out of the dugout to protest.
"He said that he saw Getzy tag the ground and then tag Trout after his hand was on the bag," Yost said. "But as far away as I was in the dugout, I could obviously see Getz make the tag in front of the bag. It's unfortunate that they missed the call because it changed the whole complexion of the inning."
Pujols walked and Mark Trumbo singled up the middle to score the go-ahead run. The runners moved up on a flyout and Howie Kendrick's sacrifice fly scored one run, and Alberto Callaspo's double another. It was 5-2 and the Royals couldn't budge Vargas or reliever Garrett Richards in the final three innings.
Royals starter Luis Mendoza trod a rocky path in the first inning but didn't stumble, thanks to a terrific play by shortstop Alcides Escobar. Erick Aybar opened the game with a double into left field and Mendoza alternated two outs with two walks that loaded the bases.
That's where Escobar came in, gliding deep into the hole for Kendrick's grounder and, as he whirled, throwing a one-bouncer into the glove of first baseman Eric Hosmer. It was just in time for the third out.
"That's a hard play. I've made that play before. When I catch the ball like that, I've got to turn, because he hit the ball hard and he's not fast a runner," Escobar said. "I know I can make that play. With two out, that's a nice play in that situation."
After a tough inning, the Escobar play gave Mendoza a significant boost.
"They played very good defense today and that play was unbelievable," Mendoza said. "That gave me more energy to go through those innings."
Getz also made a dazzling spin-and-throw play on Callaspo to start the sixth inning.
"What a great game defensively. Escobar with another highlight film. Getz made a great play. It was just a very good, solid defensive game all the way around for us," Yost said.
The Angels' first run came in the third inning when Trout, on third base, scored on Mendoza's wild pitch. The ball rebounded off the backstop back to Perez, whose quick flip to Mendoza at the plate was just an instant late. Mendoza got banged up a bit as Trout slid into him.
"Just my left knee, but nothing serious. I'm ready for my next start," Mendoza said. "It was close. I just caught the ball and tried to tag him. I didn't see whether I tagged him or not. They called safe."
The Royals got that run back as Miguel Tejada homered to left field off Vargas in the third.
In an eight-game period in which the Royals' opposition has hammered 12 home runs, this was just the Royals' second and both were by Tejada, a part-time player.
The Royals added a run in the fifth. Cain singled and stole second and, after two outs, Vargas wanted no part of Tejada again, so he was walked intentionally. But Getz punched a single past shortstop Aybar to score Cain for a 2-1 lead.
Then, Mendoza was lifted after five innings and 86 pitches. Hochevar gave up the tying run on Chris Iannetta's homer in the sixth.
The Angels had more left in them, but the Royals didn't.
"We're falling on the wrong side of things right now," designated hitter Billy Butler said. "I mean, a hit here, a hit there and we're right back in it. We've been in a lot of close games lately, one hit away, one pitch away it seems like every game."