Cheslor Cuthbert and Jorge Soler homered in a five-run third inning and the Kansas City Royals stayed hot Thursday, completing a four-game sweep of the Chicago White Sox with a 6-5 win.

Ian Kennedy gave up a run in the ninth, but struck out A.J. Reed looking with the tying run on second base to clinch the win and earn his 16th save in 19 opportunities.

The four-game winning streak is Kansas City's longest of the season and just the Royals' second series sweep this year.

Chicago White Sox's Yoan Moncada slides home to score on a double play hit into by Welington Castillo during the first inning of a baseball game against the Kansas City Royals Thursday, July 18, 2019, in Kansas City, Mo. (AP PhotoCharlie Riedel)

Chicago White Sox's Yoan Moncada slides home to score on a double play hit into by Welington Castillo during the first inning of a baseball game against the Kansas City Royals Thursday, July 18, 2019, in Kansas City, Mo. (AP PhotoCharlie Riedel)

The White Sox, on the other hand, have lost seven in a row since coming back from the All-Star break and drop a season-worst nine games under .500.

Royals starter Brad Keller (6-9) got off to a rocky start, allowing the first four batters of the game to reach base on a pair of infield hits, an error and a walk, leading to a pair of unearned runs. But Keller settled down after that and battled through 6 1/3 innings, allowing just a couple of runs after the first inning. Keller gave up nine hits, struck out seven and walked two.

Yoan Moncada matched his career high, set last year, with his 17th home run in the top of the third to make it 3-0 before the Royals scored.

Cuthbert led off the inning with a shot to left-center and Soler hit a two-run homer a couple of batters later to draw the Royals even. Billy Hamilton's two-run single later in the inning put the Royals ahead for good.

Cuthbert finished with three hits.

Bubba Starling had the best game of his young career. The 26-year-old had two hits, his first multi-hit day as a big leaguer, including his first extra-base hit when he doubled in the fifth inning and first career stolen base. Starling also scored twice, the second coming on Cam Gallagher's bunt single in the fifth inning, putting the Royals up 6-3. After going hitless in his debut, Starling has a hit in five straight games.

White Sox starter Ross Detwiler (1-1) lasted just 2 1/3 innings, giving up five runs and eight hits. In the four games this series, Chicago starters gave up 20 runs, 18 earned, in 19 innings and had an 8.53 ERA.

STATS AND STREAKS

Whit Merrifield had his 15-game hitting streak end, going 0-for-5 at the plate. He extended his on-base streak to 24 games when he reached on an error in the fifth inning. ... Brad Keller made his fifth start this season and ninth in his career (out of 41 starts) against the White Sox.

The Royals swept the White Sox for the first time since July 21-23, 2017, and the first time in a four-game series since July 25-28, 1994.

UP NEXT

Kansas City: The Royals head to Cleveland for a three-game set with the Indians beginning Friday. Mike Montgomery (1-2) will make his Kansas City debut in his first start of the season. Montgomery made 20 relief appearances with the Chicago Cubs before being traded earlier this week. The plan is for Montgomery to throw around 45 pitches. Shane Bieber (8-3) will get the ball for Cleveland.

Chicago: The White Sox open a three-game set with Tampa Bay on Friday. Reynaldo Lopez (4-8) will get the start for Chicago looking to build on one of his best outings of the season on Sunday, when he allowed just one unearned run and three hits over six innings. Tampa Bay has yet to announce a starter.

More AP MLB: https://apnews.com/MLB and https://twitter.com/AP_Sports