ARLINGTON, Texas — Cole Hamels provided another reminder of what an ace means to a beleaguered starting rotation.

Hamels (12-2) allowed two runs and six hits in eight innings, matching his longest start of the season, to help the Texas Rangers beat the Kansas City Royals 3-2 Thursday night.

Hamels' 123 pitches were 10 more than his previous high for the year. He didn't allow an earned run in his previous two starts, totalling 13 1/3 innings.

"It's always great when you're able to go out there, you're doing well and you're having non-stressful innings and they're pretty quick," the 32-year-old Hamels said. "You're able to keep going out there, keep a good rhythm, a good pace."

Texas manager Jeff Banister said: "He's our front-end guy. I mean, he's our ace. He's the guy that sits in the front of that rotation."

The Rangers managed only four hits off Yordano Ventura (6-9) — including three home runs. Mitch Moreland's second of the game broke a 2-2 tie in the eighth inning. Rougned Odor also went deep.

Sam Dyson earned his 21st save in 23 opportunities, stranding the tying run at third base after walking the leadoff batter in the ninth.

The AL West-leading Rangers are 5-8 since the All-Star break, the 10-game lead of late June now at three. The only wins by Texas starters during that stretch are from Hamels. He's 3-0 since then with a 0.84 ERA, an opponents' batting average of .190 and 23 strikeouts against four walks.

The game was a pitching rematch of the Rangers' 7-4 win in Kansas City last Saturday. Hamels allowed one unearned run over 5 1/3 innings and also got that win. Ventura was the loser then, giving up three runs in five innings.

"You think you know what he's got," said Eric Hosmer, who went 0 for 4 with two strikeouts. "He did a good job of mixing in a lot more offspeed pitches."

Hamels will get an extra day's rest before his next start. Banister said that and recent struggled by Texas' bullpen helped determine that Hamels, at 96 pitches through seven innings, would go out again for the eighth.

Catcher Robinson Chirinos said he asked Hamels after the seventh how he felt. "He's like, 'Let's go,'" Chirinos said. "He deserved that win. He was outstanding."

Hamels' 12 strikeouts equaled his Texas high, set last September vs. Seattle. His career high — set with Philadelphia — is 15. The 12 is the most by a Rangers pitcher this season.

Odour's 19th of the season added to his career high and went 465 feet into the upper deck in right field, the longest of his career.

MORELAND IS LOCKED IN

Both homers by the left-handed hitting Moreland were to the opposite field. It was his 10th career multi-homer game and second of the season. He has five homers in his last 11 hits.

Banister said Moreland, 30, is unaffected by the recent call-up of power-hitting prospect Joey Gallo, who will share time at first base with Moreland.

"Mitch is a pro," Banister said. "He understands. He knows he's a part of this lineup. He's a big part of this lineup. So, there was no real conversation that needed to be had."

SHORT HOPS

Neither team had a hit with runners in scoring position. Kansas City was 0 for 11 while Texas didn't have an at-bat in that situation. . The game began after a 35-minute rain delay. It was the second rain delay in three days, an unusual summer occurrence in Arlington. ... The first son of Royals 3B Cheslor Cuthbert was born on Thursday morning in Venezuela.

TRAINER'S ROOM

Royals: RHP Luke Hochevar was placed on the 15-day disabled list with symptoms of thoracic outlet syndrome.

Rangers: LHP Derek Holland (shoulder) is expected to throw a bullpen session on Friday. One of the scheduled hitters is RF Shin Soo-Choo (hamstring strain).

UP NEXT

Friday night's game will be a pitching rematch of Sunday afternoon's 2-1 Texas win at Kauffman Stadium in which each starter allowed one run and got a no-decision. Royals RHP Edinson Volquez (8-8) allowed seven hits in six innings, Rangers RHP A.J. Griffin (3-1) four hits in five innings.