Eddie Rosario knocked in an insurance run in the eighth as the AL Central-leading Twins won their third straight to remain 3 1/2 games ahead of Cleveland. Minnesota (80-51) moved to 29 games above .500 for the first time since Sept. 26, 2010.

Tim Anderson’s 14th homer accounted for the only run off Pineda (10-5), who won his third straight start and fourth straight decision. The right-hander allowed four hits and walked one while striking out eight, but was replaced by Sam Dyson to start the sixth after 89 pitches.

Tyler Duffey, Sergio Romo and Taylor Rogers followed as Minnesota’s bullpen came through with four scoreless innings. Rogers pitched a perfect ninth for his 21st save.

Lucas Giolito (14-7), who shut out the Twins in a three-hitter while striking out 12 and walking none in Minneapolis last week, wasn’t as crisp this time. The White Sox ace gave up two runs and four hits with three walks in six innings, while striking out nine to reach 203 for the season.

Giolito threw 106 pitches, topping 100 for the fifth straight outing.

Max Kepler, who leads the Twins with 35 home runs, didn’t start, but pinch-hit in the eighth and then played center in an outfield shift after Gonzalez left with an abdominal issue. Minnesota still increased its major league-leading homer total to 255.

The Twins took a 2-0 lead in the second on solo shots by Gonzalez and Schoop, although Giolito fanned the three other Minnesota batters in the inning.

Gonzalez led off by lofting a 1-2 pitch into the right-field stands for his 15th homer. With two outs, Schoop hit an 0-1 pitch deep to left for his 19th.

Anderson’s homer to right-center leading off the fourth was Chicago’s first hit and cut it to 2-1.

Jorge Polanco, Nelson Cruz and Rosario line three straight singles in the eighth to make it 3-1