He focused on strikeouts.
With trash swirling around him, Wilson struck out the side in the ninth to preserve San Francisco's 6-5 win Sunday that ended the New York Mets' nine-game home winning streak in a game that lasted 3 hours, 45 minutes.
"It's not part of my job description to think about wind and garbage," Wilson said. "That drop made me focus a little bit more and get the job done."
Aaron Rowand hit a go-ahead, two-run homer into winds that gusted to 38 mph in the eighth inning after the Giants blew a two-run lead for Tim Lincecum, his third straight no decision after leaving with the lead.
San Francisco finished its East Coast trip 4-2, while New York -- which won the first two of the series with game-ending homers -- lost for the first time at Citi Field since April 21.
"This would've been a tough one to take," Giants manager Bruce Bochy said. "But they bounced back and it made for a pretty good road trip."
Lincecum left after six innings with a 4-2 lead before the Giants fell apart in the seventh. Bay's wind-aided two-run single off Dan Runzler tied it and David Wright gave New York its first lead with a sacrifice fly.
Rowand homered to right-center after Jenrry Meija (0-2) issued the Mets' 10th of 11 walks to retake the lead, and Wilson prevented the Mets from making it three last at-bat wins in a row. He got all five of his outs by strikeout for his seventh save.
"That's as hard as I can hit a ball that way," Rowand said. "I honestly thought it was going to be caught."
Bay led off the ninth with another pop fly that the Giants fielders couldn't catch -- it hit off shortstop Juan Uribe's glove. Wright then struck out for the fourth time and was ejected for contesting the call, and Ike Davis and Jeff Francoeur struck out to end it.
Sergio Romo (1-3) got two outs for the win.
The Giants jumped out to a 4-0 lead thanks to another awful start by Oliver Perez, who walked a season-high seven and hit a batter in 3 1/3 innings.
Uribe was hit by a pitch and walked four times, including once with the bases loaded in the fourth. Rowand also scored on a passed ball in the fourth inning.
After a perfect first, Perez walked the leadoff batter in three straight innings. In the second, the Giants combined their two hits off Perez with the walk and a wild pitch to take a 2-0 lead. Matt Downs had an RBI single and Ryan Rohlinger, called up Friday for the injured Edgar Renteria, drove in a run with a groundout.
Perez again loaded the bases in the third with two walks and hit backup catcher Eli Whiteside. But he left unscathed when Angel Pagan made a running catch of Downs' drive to left-center for the third out. The half-inning took 17 minutes and Perez threw 35 pitches, 21 balls.
"I am disappointed in myself," Perez said. "I've got to be better than that. I know what I have to do."
Lincecum then had a 10-pitch, 1-2-3 inning that lasted about as long as a trip to the hot dog stand.
The fourth was much of the same. Perez walked the bases loaded while getting one out, a fielder's choice by Lincecum. After walking Andres Torres for the second straight inning, Perez was lifted to lusty boos from the crowd of 35,641.
Perez, winless in seven starts since Aug. 18, gave up four runs -- three earned. But manager Jerry Manuel said Perez will remain in the rotation.
After scattering four singles through five innings, Lincecum gave up three hits in the sixth, including RBI singles to Davis and Francoeur to make it 4-2.
The slight, two-time Cy Young winner came out for the seventh but was lifted for Runzler having thrown 116 pitches. He struck out eight
- The Giants left 12 on base, the Mets 11.
- Mets 2B Luis Castillo did not start after he left Saturday's game because of a bruised left heel. Manuel said the trainers are going to try to prevent further pain by cushioning the heel.
- Giants C Bengie Molina was not in the starting lineup because of a tight left hamstring. He hopes to play the Giants' next game, Tuesday against San Diego.