ST. LOUIS -- David Freese had a good session during batting practice before Thursday night's game. The work paid off when it counted.
Freese homered, doubled and drove in 3 runs, leading the St. Louis Cardinals to a 5-3 victory over the White Sox.
"I had the best BP I've had in a while," Freese said. "It's about trying not to do too much. Sometimes you get in the box and you want to be Superman and that isn't going to help you out. You stay with your plan and try to execute."
Freese has 7 hits in his last four games.
Adam Dunn tied Texas' Josh Hamilton for the major league lead with his 22nd homer, a 3-run shot in the sixth that pulled the White Sox to 5-3.
Matt Adams had a 2-run single for St. Louis, which had scored 1 run in three straight games coming in and no more than 2 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 6 innings, allowing 5 hits and 3 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.
"It's always my game plan to keep the ball down," said Westbrook, who got nine groundball outs in the first four innings. "I did that early tonight. The bullpen came in and did a good job. The offense showed up tonight. Adams got a huge hit. It was a good win for us."
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 6 starts. Floyd, who is 0-5 in his last eight interleague starts, allowed 5 runs in 4 innings, hiking his ERA to 5.63.
"I'm just going to go out there and keep on fighting, keep on battling cause I know this is going to turn around," Floyd said.
Freese gave the Cardinals a 1-0 lead with a double in the second inning. He made it 3-0 with a two-out, 2-run homer to center field in the third.
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 RBI, was back in the starting lineup after being scratched Wednesday because of a mild ankle sprain. He has 4 home runs and 11 RBI in his last six games.
The Sox have lost three consecutive series.
"You want to win games and all that, but all you can ask is the way they're playing, and they're playing hard," White Sox manager Robin Ventura said. "You're not going to win every game. You're not going to win every series."