HOUSTON (AP) — Dallas Keuchel pitched seven strong innings, Jose Altuve hit a homer and the Houston Astros manufactured the go-ahead run in the seventh to complete a four-game sweep of the Chicago White Sox with a 2-1 win on Sunday.

Altuve’s solo shot put Houston up 1-0 in the fourth.

Chicago starter Lucas Giolito (5-8) had retired nine straight after Altuve’s home run when Yuli Gurriel got Houston’s second hit of the game with a double with no outs in the seventh.

HOUSTON, TX – JULY 08: Tim Anderson #7 of the Chicago White Sox hits a sacrifice fly in the seventh inning against the Houston Astros at Minute Maid Park on July 8, 2018 in Houston, Texas. (Photo by Bob Levey/Getty Images)

He took third on a fly ball out by Josh Reddick and the Astros went up 2-1 on a sacrifice bunt by Marwin Gonzalez.

Keuchel (6-8) yielded six hits and a run while walking three to win his third straight decision.

Giolito had one of his best starts of the season, allowing three hits and two runs in a career-high 7 1/3 innings.

But he continued to be plagued by a lack of run support with the White Sox being shut out in seven of his starts and managing just one run three other times.

He fared much better than he did in his first meeting against the Astros this year when he gave up a career-worst nine runs in two innings of a 10-1 loss.

Hector Rondon struck out two in a perfect ninth for his seventh save.

Yoan Moncada singled with no outs in the seventh and Yolmer Sanchez walked.

Both players advanced on a sacrifice bunt by Adam Engel before the White Sox tied it on a sacrifice fly by Tim Anderson.

Houston’s Alex Bregman went 0 for 3 with two strikeouts to snap his 12-game hitting streak, which was the longest active streak in the majors.

Engel doubled and reached third on an error by rookie right fielder Kyle Tucker, who made his major league debut on Saturday, with one out in the fifth.

But Keuchel left him stranded when he struck out Tim Anderson before Avisail Garcia grounded out.

Jose Abreu singled to start the sixth before Keuchel got three straight groundball outs to end the inning.

HOUSTON, TX – JULY 08: Yolmer Sanchez #5 of the Chicago White Sox throws out George Springer #4 of the Houston Astros in the sixth inning at Minute Maid Park on July 8, 2018 in Houston, Texas. (Photo by Bob Levey/Getty Images)

Giolito had control issues early, walking leadoff hitter George Springer on four pitches before plunking Bregman.

He settled down after that, retiring nine of the next 10 batter before Houston got its first hit on the homer by Altuve.

The Astros had a chance to add on in the seventh inning, but Joakim Soria took over for Giolito with one out in the eighth and struck out Bregman and Altuve.

TRAINER’S ROOM

White Sox: Garcia left Sunday’s game in the middle of the sixth inning with tightness in his right hamstring and is listed as day-to-day. … OF Nicky Delmonico (broken hand) has gone 1 for 4 with a run scored in his first two rehabilitation games for Double-A Birmingham.

Astros: SS Carlos Correa (back stiffness) has yet to resume baseball activities, but manager A.J. Hinch said there is still a chance he comes off the disabled list before the All-Star break.

UP NEXT

White Sox: Chicago is off on Monday before right-hander Dylan Covey (3-3, 4.82 ERA) is scheduled to start in the opener of a two-game interleague series against the St. Louis Cardinals on Tuesday.

Covey is trying to get back on track after going 0-3 with a 13.20 ERA and 13 walks in his last four starts.

Astros: Houston has yet to announce its rotation for a four-game series with the Oakland A’s which begins on Monday. After the Astros play the Athletics, they’ll host Detroit for three games to complete a season-long 11-game homestand.

© 2018 by STATS LLC and Associated Press. Any commercial use or distribution without the express written consent of STATS LLC and Associated Press is strictly prohibited.