MIAMI - Rookie sensation Dontrelle Willis achieved two impressive feats Wednesday night. First he helped the Florida Marlins fill Pro Player Stadium, then he beat Randy Johnson.
Willis had a little help from Arizona second baseman Junior Spivey, who made an errant throw that allowed two to score in the sixth inning. That was the difference as Willis and the surging Marlins beat Johnson and slumping Diamondbacks 3-1.
The showdown of showcase left-handers drew 37,735, much more than the Marlins projected and their largest turnout since July 14, 2001. Nearly half the tickets were purchased Wednesday in anticipation of a pitching gem, and that's what the fans got.
"If you're not a fan of baseball watching that game, you're not going to be a fan," Willis said. "It was just fun to watch."
The crowd also saw the Marlins win their sixth in a row and complete their first series sweep of Arizona. The Diamondbacks have lost nine consecutive road games, a team record.
In a battle of the ages, Willis, 21, gave up four hits in seven innings. The Diamondbacks' only run was a homer by the second batter he faced, Alex Cintron.
Johnson, 39, making his third start after missing 21/2 months following arthroscopic knee surgery, was almost as good. He allowed four hits in six innings but gave up two unearned runs in the pivotal sixth.
Arizona led 1-0 when Florida loaded the bases with one out. Miguel Cabrera hit a grounder through Johnson's legs to Spivey, who appeared to have an easy double play.
Spivey stepped on the bag but threw low and wide to first for Arizona's third error. The ball got away from first baseman Shea Hillenbrand, and two runs scored.
That was too many for the Diamondbacks to overcome. They've been outscored 13-9 while losing five of seven.
"One mistake changed the outcome of the ballgame, and I take the blame for it," Spivey said. "That was a mistake that shouldn't happen."
Johnson lost to the Marlins for the first time in 10 career starts against them.
ASTROS 7, BRAVES 3: Adam Everett singled in two to cap a four-run first and Ron Villone overcame a wild streak for visiting Houston.
The Braves left 12 runners on, squandering numerous chances. Meanwhile the Astros struck quickly against rookie starter Horacio Ramirez, who had given up five first-inning runs all season.
Craig Biggio doubled into the leftfield corner on the second pitch of the game and scored on Jeff Kent's double. Orlando Merced, filling in for the ailing Lance Berkman, drove in a run with a groundout to make it 2-0.
Ramirez hit Brad Ausmus with a pitch to load the bases for Everett, who blooped a single to left-center in front of Andruw Jones while two scored easily.
GIANTS 6, CUBS 3: Jason Schmidt combined with five relievers on a four-hitter for visiting San Francisco in his first start since stiffness in his right forearm forced him to miss one.
"I got (tired) a little bit. It felt like I haven't been out there in a couple weeks," Schmidt said. "I was just trying to throw the ball over the plate like I normally do and let them hit it."
PHILLIES 4, DODGERS 2: Ricky Ledee hit a go-ahead triple in the seventh and Jim Thome drove in two for host Philadelphia. Los Angeles failed to score more than two for the sixth straight game. The Dodgers have totaled five runs in going 3-3 over that span.
CARDINALS 11, EXPOS 1: Rookie Dan Haren pitched seven shutout innings and Mike Matheny hit a three-run double in a seven-run first to lead visiting St. Louis. Haren hit a run-scoring double to cap the first, then scattered four hits in seven innings. He is 2-0 in his past four starts.
REDS 3, ROCKIES 2 (10): Jason LaRue led off the ninth with a tying homer and Adam Dunn singled with the bases loaded in the 10th as host Cincinnati gave interim manager Dave Miley, a Tampa native, his first win.
PIRATES 7, PADRES 2: Reggie Sanders homered twice and drove in five in what might have been his next-to-last game with host Pittsburgh. The outfielder is being looked at by several contenders for the stretch drive.
METS 2, BREWERS 0: Al Leiter pitched seven sharp innings and host New York stopped a four-game losing streak.