Willi Castro's at-bat in the eighth inning Saturday night wasn't the deciding play in the Twins' 6-2 victory over the Chicago White Sox. That probably belonged to Max Kepler, who hit a go-ahead homer in the seventh inning, if not Bailey Ober after a strong seven-inning start.

"There were some big moments in this game," Twins manager Rocco Baldelli said, "but the Willi Castro at-bat was just exciting, even for us."

Castro, batting with two runners on base and two outs in a one-run game, was locked in a 13-pitch battle with White Sox reliever John Brebbia. After reaching a 2-2 count, he fouled five consecutive pitches with the announced sellout crowd of 38,289 growing louder on each pitch.

Following a checked swing on an outside fastball, Castro fouled two more pitches before he pulled a 95-mph fastball into right field for a two-run single. As he stood on first base, the Twins' second sellout crowd of the season began chanting his name: "Willi! Willi!"

"I heard them getting really loud," said Castro, who saw nine fastballs and four sliders from Brebbia. "I was just thinking, 'I have to do something here.' I don't want to strike out."

Kepler gave the Twins a one-run lead in the seventh inning with a two-out, solo homer to right field off White Sox reliever Touki Toussaint. He sat out Friday, two days after he was hit in the helmet by an errant throw from a catcher, and he told Baldelli in a postgame phone call that he really wanted to play Saturday.

Castro, after his hit, scored on a single from Brooks Lee, and the Twins handed the White Sox their 19th consecutive loss. It matches the longest losing streak by a team in the past 36 seasons. The Twins have an 18-2 record against their division rival since May 4, 2023.

"We never stop grinding at-bats, you know," Kepler said. "It doesn't matter who we are playing. It showed, like Willi's at-bat was a perfect example."

BOXSCORE: Twins 6, Chicago White Sox 2

Ober provided another efficient start. He gave up two hits and two runs in seven innings, striking out seven, despite feeling like he had to grind through every inning because he didn't have the best command of his pitches.

It was his third consecutive start completing at least seven innings, the first Twins pitcher to achieve the feat since Ervin Santana in 2017.

"It feels like he's just always executing in the sixth inning, seventh inning, in these games as well as he is in the second and the third," Baldelli said. "That's not typical."

Ober didn't give up his first hit until there were two outs in the fifth inning. Korey Lee, the No. 9 hitter in the White Sox lineup, lined a fastball down the right-field line and right fielder Manuel Margot made an ill-advised attempt to cut off the ball at an aggressive angle. The ball skipped past a sliding Margot, and Gavin Sheets, who was hit by a pitch to lead off the inning, scored from first base.

Chicago shortstop Brooks Baldwin hit his first career homer in the sixth inning, a tying blast on a first-pitch fastball.

Ober, who has a 1.95 ERA over his past eight starts, retired his final six batters with three strikeouts.

"Probably just a little [angry], to be honest with you," Ober said. "Just told myself to stop thinking and just go after guys."

The Twins tallied only one hit against White Sox lefthander Garrett Crochet, but Ryan Jeffers turned it into an early lead when he lifted an elevated cutter for a two-out homer in the second inning. Crochet, the American League leader in strikeouts, lasted four innings and struck out only two, his lowest total in a start this year.

After the White Sox tied the game in the fifth inning, they immediately gave the run back. Austin Martin hit a liner that left fielder Corey Julks misplayed in the bottom half of the inning, allowing the ball to roll to the wall and granting Martin two extra bases. Five pitches later, Lee hit an RBI single.