Jason Hammel is starting to look more like the pitcher who won 15 games with the World Series champion Chicago Cubs two years ago. On Sunday, he was helped by a bullpen that had just enough to deliver the win.
Hammel pitched 5 1/3 shutout innings. He gave up four hits, including three doubles, and two walks.
"A tip of the cap to the bullpen for coming in and covering those innings," Hammel said. "For a very aggressive team like that, you can get quick outs and get deep into a game if you can execute early."
Perez and Butera each homered off Cole Hamels (3-5), who allowed five runs on eight hits and three walks in 6 1/3 innings with a season-low two strikeouts.
Kelvin Herrera, the last of five Royals relievers, pitched a scoreless ninth inning after allowing a leadoff single for his 11th save in 12 chances.
When Hammel held St. Louis to one run in seven innings to win last Wednesday, it ended a string of 13 winless starts for the 35-year-old. He went into Sunday's game leading the American League in hits allowed with 71.
"His record doesn't indicate the way he's pitched," Royals manager Ned Yost said. "Days that he's gotten beat, it's been on two or three pitches. He's been around the plate extremely consistently the last two."
Texas went 0 for 11 with runners in scoring position, 0 for 7 during the first three innings. In the eighth inning, Jason Adam put runners on the corners with one out before striking out Gallo and getting Rougned Odor to pop to third.
"It's about being able to calm yourself down, put together a quality at-bat," Texas manager Jeff Banister said. "But today, Hammel, their guy, I thought made some quality pitches in those situations."
SELF-INFLICTED TEXAS HEAT
Hamels didn't allow more than two earned runs in any of his previous five starts. He blamed himself for not having adequate "mound presence" Sunday, not moving on and forgetting the previous batter.
"Haven't had games like that in a while where you let the emotions get the best of you," he said. "I'm sure I'll probably have to issue some apologies for the language that I was probably using. I'll probably deal with that with my father."
Royals rookie Hunter Dozier, who grew up about 45 miles north of Globe Life Park in Denton, Texas, had a two-out, two-run single in the first inning. The 2013 first-round draftee had his third straight multihit game and first multi-RBI game.
"This is a dream come true," said Dozier, who's playing first base with Lucas Duda on the disabled list. "It was cool I was able to make this trip, see the family and stay at home."
Jon Jay has hit in nine straight games and 18 of his last 19. ... Nomar Mazara's two-out walk in the bottom of the first was the first issued by Hammel in 62 consecutive batters. ... Hamels' 11 combined hits and walks were his most this season. ... Shin-Soo Choo extended his on-base streak to 14 games.
Rangers: LHP Matt Moore (right knee) will be activated off the 10-day DL and start Wednesday at Seattle.
Royals RHP Jakob Junis (5-3) has 14 wins in his first 30 career appearances, tied for the most in franchise history with Rich Gale (1978) and Jose Rosado (1996-97).
Rangers RHP Doug Fister (1-4) has allowed 15 earned runs in his last four starts, raising his ERA from 2.88 to a season-high 4.22.