Mendoza (7-8), who has shoulder-length hair, allowed two runs and four hits, struck out six and walked one. The 28-year-old right-hander improved to 3-1 with a 3.58 ERA in August.
"It's kind of like his hair," Royals manager Ned Yost said. "His streak gets a little bit longer and a little bit fluffier as time goes on. I don't know what to say.
"What he's doing is attacking the strike zone with good natural movement on his fastball, which is tough to center. He's been very effective with his curveball and his changeup. You add all that up, he gets quick outs, goes deep into the games. I think we're seeing a lot of what they saw last year in the Pacific Coast League."
Mendoza (7-8) was the 2011 PCL pitcher of the year, but he entered this season with only six big league wins over parts of five seasons.
If Mendoza's long hair is the secret to his success, Butler doesn't care if he ever cuts it.
"Whatever it takes," said Butler, who hit his 25th home run. "He can do whatever he wants if he keeps throwing like that. He's strung quite a few starts together that have been real good. I think he's the best pitcher on our staff right now with the stuff that he's been throwing. He's going deep into the game every time out.
"Mendy threw fantastic. He got into a rhythm and was just pounding the strike zone. He had a real good curveball. He's been working on his off-speed stuff and throughout the season it has gotten a lot better."
Paul Konerko hit a solo drive for Chicago after being activated from the seven-day concussion disabled list. It was Konerko's first game since he was struck by a Jarrod Dyson elbow while covering first base on Aug. 7 against the Royals.
White Sox ace Chris Sale (14-4) allowed four runs and nine hits in 6 2/3 innings. The 6-foot-6 left-hander dropped to 11-2 with a 2.60 ERA in his last 15 starts.
Gordon Beckham hit a two-out RBI single in the fifth to give the White Sox a 2-1 lead, but Butler belted a tying solo drive in the sixth.
The Royals grabbed the lead for good in the seventh. Mike Moustakas and Alcides Escobar hit consecutive one-out singles to put runners on corners. Escobar then stole second when Alex Gordon struck out for the second out.
After Butler was walked intentionally, Perez fell behind in the count 1-2 before rifling a double off the fence in left.
"He's just a big, strong guy who put his bat out there and got it," Sale said. "You have to give him credit."
The White Sox put runners on the corners with two down in the ninth, but Dayan Viciedo flied out to end the game.
Chicago got a scare in the first inning when a wicked Escobar one-hopper struck Sale in his pitching hand. That prompted a visit from manager Robin Ventura and a trainer, but Sale remained in the game after a couple of warmup pitches.
"At first I was a little scared, but I started moving it around and it was fine," Sale said. "After a couple of warmup pitches it was fine."
Royals second baseman Chris Getz broke his left thumb in the fifth inning when he was hit by a pitch while bunting foul. He is scheduled to have surgery Saturday and is done for the season.
In addition to activating Konerko, the White Sox recalled LHP Hector Santiago from Triple-A Charlotte and placed INF Orlando Hudson (bruised left foot) and LHP Leyson Septimo (left biceps inflammation) on the 15-day DL. ... Butler started at first base for only the 12th time as regular 1B Eric Hosmer was held out of the lineup against Sale. .LHP Bruce Chen, who starts Saturday, is 4-4 against the White Sox, but all the victories have come at U.S. Cellular Field. RHP Jake Peavy, who is 1-4 with a 5.93 ERA in five starts at Kauffman Stadium, will be the White Sox starter.