Jose Abreu nearly had his second cycle in three days.
Abreu had four hits, Adam Engel hit a three-run homer and the Chicago White Sox pounded out an 11-3 victory over the Kansas City Royals on Monday night.
Abreu, who hit for the cycle Saturday and had two home runs Sunday, drove in two and scored once while raising his average to .306. He drew a ninth-inning walk and was a homer shy of another cycle.
"We were sitting there in anticipation watching the at-bat," White Sox manager Rick Renteria said in the ninth. "It would have been something unique. I don't know how many times that's ever been done, two cycles in three days. But it would have been unique to see something like that happen again for him."
Royals reliever Trevor Cahill started off Abreu with a ball in the ninth. Abreu fouled off the next two pitches before looking at three straight pitches out of the strike zone.
"I went through that at-bat looking for his changeup," Abreu said through an interpreter. "He threw it, but I fouled it off. Then I had to make an adjustment to keep battling in that at-bat."
Engel went deep off Brandon Maurer during a six-run sixth.
Yolmer Sanchez, Yoan Moncada and Abreu, the first three White Sox hitters, combined to go 9 for 16 with six runs and four RBIs. Moncada had his first career three-hit game.
Reynaldo Lopez (1-3) gave up three runs and eight hits in six-plus innings to pick up his first victory since Sept. 29, 2016.
The loss dropped the Royals three games behind the Minnesota Twins with 19 games left for the second AL wild card.
Jason Hammel (8-11) was pulled after giving up five runs in 3 1/3 innings, his shortest start since going three innings on April 30. He walked two, including Nicky Delmonico with the bases loaded in the fourth.
"It was just one of those nights, a weird night," Hammel said. "Everything I threw up there they either placed very well or hit it hard. That was the tone of the whole game really for us."
The White Sox scored two runs in the first with Moncada's triple. He scored on Abreu's single.
Eric Hosmer singled in the Royals' second, his ninth straight hit, matching the longest streak in the majors this season and one shy of the Royals' record. He grounded out to third baseman Sanchez leading off the fourth to end the streak.
Brandon Moss homered to begin the Royals' three-run fifth. Whit Merrifield tripled home Alex Gordon with the second run and scored on Lorenzo Cain's single, cutting the White Sox advantage to 5-3.
"At that point we were doing everything we could to hold it right there and see if we could take the lead at any point," Royals manager Ned Yost said.
The White Sox have outscored the Royals and San Francisco Giants 32-5 during a three-game winning streak.