CHICAGO — The Chicago White Sox had a little fun with slumping slugger Jose Abreu on Friday night.

Abreu homered for the first time in July, helping the White Sox hold off the Kansas City Royals for a 9-6 victory.

Leury Garcia had three hits and three RBIs as the White Sox earned their second straight win after a six-game slide. They finished with 14 hits against the AL Central-worst Royals.

Abreu broke out of a 2-for-23 slide with a single to center in the fourth inning. Manager Rick Renteria then saw an opportunity to take the edge off in the dugout, joking with his All-Star first baseman about a possible memento.

"We were asking him if he wanted us to get the ball for him. He kind of got a little chuckle off of that," Renteria said.

Abreu didn't mine the friendly jab.

"It was a good moment," Abreu said through a translator. "It was my first hit in a few games and I was happy. Ricky is always trying to make it fun to try to relax the atmosphere and the tension between us."

Garcia doubled in two runs in the first, singled in the third and connected for a solo drive in the sixth. Omar Narvaez added a two-run homer in the eighth off Kevin McCarthy and Joakim Soria pitched the ninth for his 14th save in 17 chances.

Chicago right-hander James Shields (4-10) struck out seven in 6 2/3 innings. He was charged with four runs, two earned, and five hits.

"For the most part I was pounding the strike zone tonight," he said. "I had my changeup working tonight. I haven't had that in a couple of games so I'm just trying to pound the strike zone as much as I possibly can and go deep as I possibly can in the game."

Whit Merrifield had two hits and scored two runs for Kansas City, which has dropped 12 of 13. Brad Keller (2-4) was tagged for five runs and seven hits in 2 2/3 innings.

Keller attributed his struggles to his mechanics.

"Just like my typical cues to get through the ball, I wasn't hitting right," he said. "So I just was kind of leaning off the left a little bit, pulling balls and balls were coming over the middle of the plate."

Jorge Bonifacio chased Shields with a two-out, two-run double in the seventh. Lucas Duda scored on third baseman Yolmer Sanchez's error in the eighth and Merrifield added an RBI single, pulling Kansas City within one.

But Charlie Tilson made a nice running catch on Bonifacio's deep fly ball to center, ending the inning. Soria then worked a perfect ninth.

"Our offense has picked up here in the last week. I'm feeling better about the at-bats I'm seeing and the production we're getting out there," Royals manager Ned Yost said.

The White Sox opened a 5-2 lead with two in the third. Narvaez and Ryan LaMarre each had an RBI single.

Abreu and Garcia went deep in the sixth. Abreu hit a solo shot off Heath Fillmyer for his 13th of the season. It was his first homer since June 27.

Garcia's fourth homer came against Tim Hill.

TRADE TALK

The White Sox are expected to be active before the trade deadline once again. Abreu, outfielder Avisail Garcia and Shields could attract some attention from contenders.

"I'll say the same thing I said last year — as long as they're here, they're ours, and we have to keep doing what we do," Renteria said.

TRAINER'S ROOM

Royals: OF Rosell Herrera could return from paternity leave for the series finale on Sunday, Yost said.

White Sox: Avisail Garcia (left hamstring tightness) may not require a rehab stint before his return after the All-Star break. "This was sincerely very mild," Renteria said. "It was more precautionary and it's just a matter of that thing calming down a little bit."

UP NEXT

Royals: LHP Danny Duffy (4-8, 4.89 ERA) will bid for the fourth quality start in his last five tries Saturday.

White Sox: RHP Reynaldo Lopez (4-6, 3.77 ERA) will take a career 2-0 record and 3.28 ERA versus Royals into his start.