David Freese homered, doubled and drove in three runs, leading the St. Louis Cardinals to a 5-3 victory over the Chicago White Sox on Thursday night.
Adam Dunn tied Texas' Josh Hamilton for the major league home run lead with his 22nd, a three-run shot in the sixth that pulled the White Sox to 5-3.
Matt Adams had a two-run single for St. Louis, which had scored one run in three straight games coming in and no more than two in each of the last five.
Cardinals starter Jake Westbrook (5-6) retired the first 12 batters on 41 pitches before giving up a leadoff single in the fifth inning to Paul Konerko, who leads the American League with a .364 average. Westbrook threw only 67 pitches in six innings, allowing five hits and three runs.
The win snapped a slump for Westbrook, who had gone 0-4 with a 7.55 ERA in his previous six outings since winning May 8 at Arizona.
Westbrook also broke his skid against Chicago. He was 0-5 with a 5.87 ERA in his previous eight starts against the White Sox since beating them Aug. 7, 2007, when he was with Cleveland. He had not faced Chicago since 2010.
Jason Motte pitched the ninth for his 13th save.
White Sox starter Gavin Floyd (4-7) is 1-4 with a 10.38 ERA in his last six starts. Floyd, who is 0-5 in his last eight interleague starts, allowed five runs in 4 2-3 innings, hiking his ERA to 5.63.
Freese gave the Cardinals a 1-0 lead with a double in the second inning. He made it 3-0 with a two-out, two-run homer to center field in the third.
After striking out twice, Adams drove in two runs when he singled on a full-count pitch with the bases loaded. That gave St. Louis a 5-0 lead in the fifth inning.
In the sixth, with two on and two outs, Dunn slammed the first pitch from Westbrook over the center field fence. Dunn, who has 50 RBIs, was back in the starting lineup after being scratched Wednesday because of a mild ankle sprain. Dunn has four home runs and 11 RBIs in his last six games.
St. Louis shortstop Rafael Furcal snapped an 0-for-23 skid with a single in the eighth.