Chris Carpenter always arrives at the ballpark thinking he is going to pitch an exceptional game. Maybe that's why he does exactly that so often.
Carpenter limited the Pirates to two hits over eight innings in his third consecutive strong start, and Jim Edmonds and David Eckstein homered in the St. Louis Cardinals' 4-0 victory over the Pirates on Wednesday at Pittsburgh.
Carpenter has been near perfect on the road the last two seasons, going 14-1 in 18 starts, and he was sharp again in beating the Pirates for the sixth time in seven career decisions. He didn't allow a runner after hitting Chris Duffy with a pitch to start the first until rookie Ronny Paulino singled with one out in the sixth for his third career hit.
Pittsburgh didn't threaten until Freddy Sanchez singled and Jason Bay walked starting the seventh. But Carpenter got Jeromy Burnitz and Craig Wilson to fly out and Mike Edwards to strike out.
"That was vintage Carpenter," Cardinal Manager Tony La Russa said. "He had first and second, the middle of the lineup, and he gets out of it. That's what he does. He's got three different fastballs, a curve, a changeup, five or six things he throws a guy. He gives different looks to different hitters. He's quite a handful."
Carpenter (2-1) struck out six and walked one to lower his earned-run average to 1.67, and he has given up only one earned run and 10 hits over 22 innings in his last three starts.
Edmonds returned after not starting for four games (right shoulder inflammation) and drove in three runs.
Atlanta 2, New York 1 -- Tim Hudson took a shutout into the ninth inning and pitched a three-hitter, and Andruw Jones hit his fifth homer in four games to help the Braves win at New York.
Hudson (1-1) struck out six and walked one. He retired the first 15 batters before Ramon Castro's leadoff single in the sixth, and didn't give up a run until Jose Reyes doubled in the ninth and scored on Chris Woodward's single.
Met third baseman David Wright made three errors and hit a game-ending groundout with a runner on. Tom Glavine (2-1) gave up two runs -- one earned -- and four hits in eight innings.
San Diego 13, Colorado 4 -- Ben Johnson had a career-high four RBIs and Vinny Castilla had four of the Rockies' season-high 19 hits at Denver.
Chan Ho Park (1-0) won for the first time since Aug. 31, giving up four runs -- three earned -- and nine hits in seven innings. Zach Day (1-2) gave up eight runs and a career-high 11 hits in 3 2/3 innings.
Philadelphia 7, Washington 6 -- Ryan Howard's run-scoring single in the 10th inning completed a rally from a 6-3 deficit at Philadelphia.
Bobby Abreu opened the 10th with a walk off Mike Stanton (0-2) and moved to second on Chase Utley's one-out walk. Howard then singled.
Ryan Franklin (1-1) worked a scoreless 10th for his first win in Philadelphia.
Howard, Abreu and David Bell homered for the Phillies off Livan Hernandez.
Milwaukee 7, Houston 2 -- Andy Pettitte lost to the Brewers for the first time since 1996 despite giving up only two runs at Houston.
Pettitte (1-3) struck out eight and walked one in seven innings, giving up seven hits. Houston has scored 12 runs in his four starts -- seven came in his lone win, against Washington on April 9. Pettitte had won six straight starts against Milwaukee.
Houston's Morgan Ensberg homered in his fifth consecutive game, tying a team record, and raised his season total to seven.
Arizona 10, San Francisco 3 -- Jeff DaVanon fell a double short of hitting for the cycle and drove in three runs in a victory at Phoenix.
DaVanon homered in the fourth inning, singled in the fifth and tripled in the sixth to lead a 13-hit attack.
Barry Bonds did not play.
Cincinnati 9, Florida 8 -- After the Reds tied it with three runs in the eighth inning, Edwin Encarnacion hit a run-scoring double in the ninth off Todd Wellemeyer (0-1) to win it at Cincinnati.
Dontrelle Willis turned an 8-4 lead over to Florida's bullpen after the sixth inning.
Todd Coffey (1-0) pitched a perfect ninth.