CHICAGO (AP) -- Miguel Gonzalez took a perfect game into the seventh inning, Todd Frazier hit a two-run homer and the Chicago White Sox beat the Detroit Tigers 7-3 on Sunday.
Melky Cabrera and Matt Davidson also connected, helping the White Sox take three of four in the series. David Robertson got two outs for his seventh save.
Gonzalez (4-5) allowed three runs and six hits in 7 2/3 innings while snapping a five-start losing streak. The right-hander struck out six and walked none.
Gonzalez retired his first 18 batters before Andrew Romine led off the seventh with a hard one-hop liner to shortstop Tim Anderson, who couldn't field the ball cleanly and was originally charged with an error. Alex Avila followed with a single into to right field, and Romine's ball was later changed to a hit.
The streak of 18 straight to begin the game was the longest by a Chicago starter since Chris Sale retired the first 19 against the Los Angeles Angels on May 12, 2013. Mike Trout broke up that gem.
Detroit right-hander Jordan Zimmermann (4-4) allowed seven runs and eight hits in five innings, raising his ERA to 6.47. He has allowed more than three runs in eight of his 10 starts this season.
The White Sox grabbed the lead on Willy Garcia's RBI triple in the third. Garcia also scored on the play because shortstop Jose Iglesias' wild relay to third base bounced into the photographers' well near the dugout.
One out later, Cabrera tacked on a solo homer to right.
Chicago then stretched the lead to 5-0 in the fourth following a 30-minute rain delay in the top of the inning. Davidson led off with a homer to center and Narvaez drove in Yolmer Sanchez from third with a bloop single over a drawn-in infield.
Frazier then made it 7-0 with his sixth homer in the fifth.
White Sox: RHP James Shields (strained right lat) has been sidelined since late April and there's still no timetable for him making a rehab start. "He's continued to throw with really positive results," manager Rick Renteria said.
PRESLEY IN, COLLINS OUT
Before the game, the Tigers promoted outfielder Alex Presley from Triple-A Toledo and designed outfielder Tyler Collins for assignment. Presley started in center field and went 1 for 3. The 26-year-old Collins hit .200 with four homers and 12 RBIs in 130 at-bats this season.
"We were hoping he came out of the funk," manager Brad Ausmus said, "but at some point, you reach a point where you can't wait anymore."
Tigers: The road trip continues Monday night in Kansas City with LHP Daniel Norris (2-3, 4.38 ERA) facing Royals RHP Jason Hammel (1-6, 5.98 ERA) in the opener of a three-game series.
White Sox: LHP David Holmberg (0-0, 0.87 ERA) makes his first start following eight relief appearances when the White Sox begin a three-game home series against Boston on Monday. LHP David Price makes his 2017 debut for the Red Sox after missing the first part of the season with an elbow injury.