NEW YORK -- Jon Garland's day could have ended much differently if not for a timely grab by his first baseman.
"Absolutely huge. That could be a complete game-changer," Garland said.
New York scored twice in the fifth inning to pull within one and had a runner on third with one out when pinch-hitter Gary Sheffield, just off the disabled list, hit a line drive that appeared headed for the right-field corner.
Tracy leaped and snared the ball, preserving Arizona's lead and taking some starch out of the Mets. Angel Pagan flied out to end the inning, and Garland cruised home from there.
"Tracy caught that ball, it almost took the breath out of the whole stadium. Kind of took them out of the game. And it almost seemed like it was a letdown on their bench. You know, like that was our chance and we lost it, when they still had a guy on," Garland said. "The defense stepped up big for me today. I tip my cap."
Tracy also hit a two-run double that put Arizona up 3-0.
Making his 300th major league appearance, Garland (6-10) gave up seven hits in his 10th career complete game and first since July 6, 2008, with the Los Angeles Angels against Toronto.
The right-hander struck out two and walked none. He threw 76 of 106 pitches for strikes.
"I thought he did a great job of keeping everybody off balance, not letting anyone get comfortable," New York's Jeff Francoeur said. "He's never controlled the ball like he did today."
Francoeur homered for the Mets (50-54), who had won six of eight. David Wright grounded into two double plays and finished 0 for 4, ending an 11-game hitting streak.
New York starter Mike Pelfrey (8-7) lasted only five innings. He sported a patchy beard -- several Mets have vowed not to shave until the team gets back to .500.
The first pitch was delayed by rain for 2 hours, 28 minutes. As a thunder-and-lightning storm rolled through Citi Field, fans were advised to take cover on the concourses for safety.
"Even a blind man could see it coming," Garland said. "But it was nice, they kept us notified real well. And they were right on with their times. They knew when it was coming, they knew when it was going to be gone. They got that field prepared pretty well. It took a lot of rain."
Once play started, gloomy clouds gave way to clear skies and sunshine.
Montero's leadoff double in the fourth was the first hit off Pelfrey. Montero scored on a two-out double by Alex Romero, putting Arizona ahead.
Montero's fifth-inning single loaded the bases for Tracy, who doubled over Francoeur's head in right.
New York responded with three straight extra-base hits to start the bottom half. Francoeur led off with a shot to left, giving him four homers and 19 RBIs in 19 games since joining the Mets in a trade from Atlanta. He had five homers and 35 RBIs in 82 games with the Braves.
"We had him positioned perfect. He hit a scud missile right at me," Tracy said.
Garland helped himself with a sacrifice bunt in the sixth, setting up Parra's two-out RBI single off Pat Misch. Ojeda hit a leadoff triple in the eighth, and Parra's sacrifice fly made it 5-2.
Pelfrey threw 107 pitches, allowing three runs and five hits. He matched a season high with six strikeouts.
"He's the type of young pitcher who right now has trouble putting guys away," Mets manager Jerry Manuel said.
The right-hander hit consecutive batters with 1-2 pitches in the second, loading the bases before Garland flied out to end the inning. Garland plunked Francoeur on the left arm in the bottom half.
After the game, the Mets optioned Misch to Triple-A Buffalo to make roster room for RHP Nelson Figueroa, who will be called up to start Monday night against Arizona ace Dan Haren. ... Montero is batting .377 with five homers and 13 RBIs in his past 13 starts.