ST. LOUIS -- To Chris Carpenter, facing Dontrelle Willis was not a Cy Young preview. It was just another stingy outing.
Carpenter is coming out on top against all of the National League's aces. He threw a three-hitter Tuesday night to become the major leagues' first 16-game winner in a 3-1 victory over Willis and the Florida Marlins.
"He's one of the best pitchers we've seen all year," Marlins manager Jack McKeon said. "One of the best-pitched games we've seen all year. Give the guy credit."
John Gall drove in the first two runs of his career and Jim Edmonds had an RBI single for the Cardinals, who have won five of eight and have the NL's best record at 67-39. St. Louis, which has beaten up on the Central Division with a 32-13 record, improved to 8-9 against the tougher competition in the East.
Carpenter (16-4) beat Roger Clemens in his first start after throwing a scoreless inning in the All-Star game, and bested Roy Oswalt and Andy Pettitte earlier this season. He won his eighth straight decision in nine starts and Willis, who hit the first two batters he faced to set the tone for a wild, 103-pitch, five-inning outing, couldn't keep up.
Carpenter convinced himself it wasn't a special matchup, and he just had to do his job against the Marlins hitters.
"Nothing I can do about what Dontrelle does," Carpenter said. "Dontrelle goes out and competes just like I do. My job is to get the one through nine guys out on their side."
Carpenter allowed only a leadoff double in the first to Juan Pierre, a third-inning single to Juan Castillo and an infield single to Jeff Conine in the ninth, striking out six and walking one. In his last nine starts, Carpenter is 8-0 with an 0.83 ERA with 68 strikeouts and 11 walks in 75 2/3 innings. His overall ERA dropped to 2.26.
He needed only 109 pitches, 81 strikes, to throw his fifth complete game of the season and the 18th of his career. For Cardinals manager Tony La Russa, it was a no-brainer sending Carpenter out for the ninth against the top of the Marlins lineup instead of Jason Isringhausen.
"We have one of the game's best closers, but he was fresh and we didn't feel like we were pushing him at all," La Russa said. "I don't care how great Izzy is, if I'm on the other side they may think they've got a better chance when the other guy comes out, because Carpenter's just dealing."
Carpenter gave up a run in the first when Pierre lined the second pitch of the game to the right field corner and scored on Conine's one-out sacrifice fly. He settled down in the second, needing only seven pitches to retire the 6-7-8 batters in order, and retired 14 straight between the third and eighth.
Willis (14-7) allowed three runs -- one earned -- and three hits with four strikeouts and three walks. He threw seven shutout innings in his previous start but has lost four of his last five starts, giving up 24 earned runs in 25 innings. He has lost his last three road starts.
"I felt like I was in the game the whole time," Willis said. "I battled through it. I kept us in the game and there were some unfortunate plays and that's all they needed."
For his career, Willis is 29-10 before the All-Star break and 9-14 after.
Willis worked out of self-inflicted trouble in the first, when he hit David Eckstein and So Taguchi and then walked Mark Grudzielanek with two outs to load the bases. He escaped on Gall's infield popup.
The Cardinals loaded the bases in the eighth against Ron Villone but got nothing when Carpenter was called out for interference when he missed on a squeeze attempt. The ball glanced off catcher Paul Lo Duca's glove and Lo Duca couldn't get around Carpenter for a tag play at the plate.
Under baseball rule 7.08g, the runner should have been out.
Gall gave the Cardinals the lead in the third on a two-run, two-out double, a sinking liner that right fielder Juan Encarnacion dived for but could not handle. A fielding error by third baseman Mike Lowell on Albert Pujols' grounder led to two unearned runs.
"It seemed like that ball was up there for a while," Gall said. "Luckily, he didn't get there."
Edmonds, 9-for-23 during a six-game hitting streak with three homers, made it 3-1 with an RBI single in the fifth.
Notes: A Beatles tribute band, Liverpool Legends, played a one-hour concert before the game on the 39th anniversary of the rock group's appearance in St. Louis. The band played from a setup at second base. ... Florida 1B Carlos Delgado missed his sixth straight game with a sore left elbow. ... John Rodriguez, who has three homers, eight RBIs and a .356 average in 14 games since being called up the Cardinals, was selected the organization's minor league player of the month. At Triple-A Memphis he hit .375 with eight homers and 24 RBIs in 14 July games. ... Both benches were warned after Villone hit Rodriguez with a pitch in the eighth.