DETROIT — Brian Wilson stepped into the dugout, picked up a water cooler and heaved it against the bench. Then he grabbed a bat, trotted back over and gave the cooler a hefty slug.
Nothing is coming easy for the San Francisco Giants right now — even when they win.
The Giants finally caught a break after Wilson's ninth-inning meltdown Friday night. Detroit's Brennan Boesch lined into a double play with the bases loaded, and San Francisco held on for a 4-3 victory over the Tigers.
"Give yourself 30 seconds to completely lose it, then come back and be a part of the team," Wilson said.
Wilson blew a save opportunity for the second straight day — this time when he allowed Magglio Ordonez's RBI single in the eighth inning. San Francisco then scored three runs in the top of the ninth to go ahead 4-1, but Wilson (6-1) couldn't close it out. He had to be pulled with one out, the bases loaded and a run already in.
That's when he took a bat and went raging across the dugout. After disposing of the timber, the right-hander appeared to hit a box with his throwing hand, but he said afterward it was fine.
"It's not that enjoyable to go out there and give up two runs," Wilson said.
The Giants were coming off back-to-back losses to the Cubs — both in Chicago's last at-bat — and they almost dropped this one, too.
Jeremy Affeldt replaced Wilson, and Detroit pulled within one when second baseman Emmanuel Burriss muffed a slow grounder for an error. Boesch was up next and made solid contact, but hit the ball to right to shortstop Brandon Crawford, who caught the line drive and quickly stepped on second to double off Brandon Inge, ending the game.
It was Affeldt's third save of the season.
"I threw a curve that didn't go where I wanted, but he hit it off the end of the bat," Affeldt said. "I was like, 'Please no ... oh, yes."'
The Tigers dropped a half-game behind first-place Cleveland in the AL Central.
Madison Bumgarner allowed a run and five hits over 7 1/3 outstanding innings for San Francisco. He struck out nine and walked one.
Bumgarner departed following a walk by Inge. Sergio Romo came on and got the second out of the inning, but Javier Lopez then took the mound and allowed a single to pinch-hitter Boesch.
Wilson was next out of the bullpen, and Ordonez greeted him with a single to right to make it 1-1.
It didn't stay tied for long. Chris Stewart led off the ninth with a double, and Aaron Rowand followed with a single, reaching base as part of his broken bat went flying over the third-base dugout.
One out later, Pablo Sandoval hit a ground-rule double to left-center to make it 2-1. The Giants added two more runs when Jose Valverde (2-3) and Brayan Villarreal issued bases-loaded walks.
Rowand had three hits.
"We've had two similar losses in a row, so this would have been really tough," Giants manager Bruce Bochy said. "Proud of the guys. They came through in the ninth and put up a crooked number when we haven't been cashing those in."
Detroit's Brad Penny allowed a run and seven hits in seven innings. He struck out two and walked two.
The Giants threatened early, putting runners at first and third with nobody out in the first. Penny got out of the jam thanks to a fantastic play by left fielder Casper Wells. Sandoval lifted a foul ball toward the seats, and Wells not only caught it amid reaching fans — but he also threw home to catch Rowand, who had tagged up at third.
"That was an extraordinary play," Tigers manager Jim Leyland said.
Sandoval made the most of his next big opportunity. With Rowand on second and two outs in the fifth, he sliced an 0-2 pitch to the gap in left-center for an RBI double.
Bumgarner has been excellent since being knocked out in the first inning of a June 21 start against Minnesota.
In his two outings since then, he's allowed two runs in 14 1/3 innings, with 20 strikeouts and two walks.
Detroit's Lester Oliveros made his major league debut in the eighth, striking out two and allowing a hit and a walk in an inning. Oliveros was called up from the minors to replace Al Alburquerque, who went on the disabled list with inflammation of his right arm.
NOTES: Detroit 2B Carlos Guillen (left knee) is transferring from Class-A Lakeland to Triple-A Toledo as part of his rehabilitation assignment. ... San Francisco plans to start LHP Barry Zito on three days' rest Saturday, with RHP Ryan Vogelsong taking the mound Sunday. Zito and Vogelsong both pitched in a doubleheader Tuesday. ... Victor Martinez has been with the Tigers barely a half-season, and he's already impressed Leyland. Martinez has made the transition to designated hitter look easy.
He's hitting .332. "I can't say enough about him," Leyland said before Friday's game. "He's one of the best teammates I've ever managed or been around."