The hard-throwing right-hander also keeps winning.
"There was kind of two Yordanos," manager Ned Yost said. "There was one that was within himself, and he was banging strikes, staying downhill. And then there was one when he was just throwing out there, raring back, and struggled to keep the ball down.
"All in all, I thought he threw a good ball game for us."
Greg Holland worked a scoreless ninth for his MLB-leading 40th save in 42 opportunities, becoming the first Royals pitcher since Dan Quisenberry in 1983-84 to have consecutive 40-save seasons. That came after Wade Davis retired all three batters he faced to extend the majors' longest active scoreless streak to 22 2/3 innings.
Lorenzo Cain had three hits after a 2-for-14 slump for Kansas City, which won for the 23rd time in 29 games. Cain doubled and scored in the seventh for the final Royals run.
Butler led off the second with his eighth homer, tying the game at 1-all. Cain and Alcides Escobar, the bottom two batters in the Royals lineup, had consecutive RBI singles in that inning against Colby Lewis (8-11) to put Kansas City ahead to stay.
Willingham made it 4-1 when he homered in the fourth, his 14th overall and second in 10 games since the Royals acquired him on Aug. 11 from Minnesota, the AL Central's last-place team.
"Obviously, it's awesome being in a pennant race, and every game, every at-bat means something," Willingham said.
Adrian Beltre had two hits and drove in the first Texas run with a groundout in the first.
Lewis pitched exactly one year after right hip resurfacing surgery. The 35-year-old right-hander is the first known major league pitcher to come back after such an operation.
Lewis retired the last eight batters he faced, and his only strikeouts came against the final two. He allowed four runs and six hits without a walk over six innings -- four being 1-2-3 frames.
"Early in the game, he just couldn't get the ball down. But then after that he settled in, and when he left the ballgame we were still in it," manager Ron Washington said. "He's been a huge factor (this season). I think when you look at it, it just shows you his professionalism."
CONTRASTING NUMBERS: Kansas City has the second-best road record in the AL at 38-28, including 5-2 on this trip. The Rangers have the worst home record in the majors at 23-39, including losses in 31 of their last 44 in Arlington. ... The Royals (71-56) moved back to 15 games over .500, a mark they hadn't reached in 20 years before doing so earlier this week. The Rangers (49-78) are a season high-matching 29 games under .500, something they hadn't done since 1985.
ANNIVERSARY NIGHT: The one-year mark of Lewis' hip surgery wasn't the only Rangers-related anniversary Friday. It was seven years ago that Texas scored a modern-day MLB record with its 30 runs against Baltimore in the first game of a doubleheader, and 25 years after Nolan Ryan got his 5,000th strikeout (Oakland's Rickey Henderson).
Royals: C Salvador Perez was back in the lineup after being scratched from the lineup in Wednesday's game because of discomfort in his right knee. An MRI showed nothing but inflammation. Yost said the sore knee initially concerned Perez, who had surgery two years ago for a torn meniscus in his left knee.
Rangers: LHP Derek Holland is scheduled to make his sixth rehab start Sunday for Triple-A Round Rock at Las Vegas. The Rangers haven't listed a starter for their series finale that day against Kansas City, but seem intent on Holland making at least one more start in the minors before his 30-day rehab assignment ends Thursday.