Yasmani Grandal went 3 for 3 with a home run and four RBIs as the Chicago White Sox built a big lead and then held off Salvador Perez and the Kansas City Royals 10-7 Saturday night.

Perez hit two homers, including his 40th of the season, and drove in five runs. His homer total is second in the majors — Shohei Ohtani of the Angels hit his 43rd on Saturday night.

Luis Robert homered and tied a career high with four hits for the AL Central-leading White Sox, who led 9-3 in the fifth inning.

Manager Tony La Russa was more impressed with Robert’s defense in center field.

"Some people will say it’s instinctive, but he must have, at an early age, shagged a lot of balls. When the batter is starting to swing he’s already moving."

CLICK HERE FOR MORE SPORTS COVERAGE ON FOXNEWS.COM

"Then he’s got the speed. Some of those balls should be in the gap and he’s picking them," he said.

Craig Kimbrel (3-4) got the win in relief. Liam Hendriks earned his 32nd save.

La Russa said it was an easy decision to bring in Kimbrel to start the seventh.

"If somebody gets on base, Perez is up," he said. "Craig had to be the guy to face him. That was the inning of decision."

"A lot of theater there in that inning. What Salvador did with those two homers made that game a very tough one for us to win," he said..

Daniel Lynch (4-4) allowed six runs in 2 2/3 innings.

The White Sox hit a pair of long home runs in the first inning. Robert launched a 452-foot drive to left center and Grandal hit a 425-foot shot for a 3-0 lead.

"We feed off each other," Grandal said of the club’s relentless offense. "We’re definitely hunting out there. We make sure we keep riding that wave as high as we can. Every time we do that, good things happen."

Chicago scored three more in the third on a wild throw by catcher Cam Gallagher, an RBI single by Grandal and a sacrifice fly from Leury Garcia.

Perez hit a two-run homer in the third. It was the 191st career home run for the All-Star catcher, breaking a tie with Alex Gordon for fourth all-time in franchise history.

Jose Abreu had an RBI double for his 500th career extra-base hit and Grandal had a sacrifice fly in the fourth for an 8-3 lead.

Perez hit his second homer of the game, a three-run drive that cut the deficit to 9-6 in the fifth. He has 12 career multihomer games, six this season.

"I see a great hitter. I see a hitter that has to be talked about as one of, if not the most dangerous hitter in the league," manager Mike Matheny said. "I see how he’s gone about these at bats, doing it in the big situations. It was one of those days when we thought about giving him a day off. The next thing you know he does something that continues to amaze us."

Carlos Santana led off the Royals sixth with his 18th home run, his first since July 24.

TRAINER’S ROOM

Royals: Perez, who was hit in the throat with an errant pitch Friday night, originally was scheduled to catch again on Saturday. Matheny said the chest protector was causing him discomfort during warmups so he was switched to designated hitter. Matheny, who played 13 seasons as a catcher, said Perez looked concerned with not being able to catch his breath immediately after getting hit.

ROSTER MOVES

With Perez unable to catch, the Royals recalled C Sebastian Rivero from Triple-A Omaha and optioned RHP Tyler Zuber.

UP NEXT

RHP Dylan Cease (11-6, 3.82 ERA) starts for the White Sox against RHP Brady Singer (3-9, 4.87 ERA).