SAN FRANCISCO -- Sean Casey has produced ridiculously big numbers in San Francisco's new ballpark.
The 31-year-old first baseman had four hits for the second straight game, Victor Santos allowed four hits over seven innings and the Pittsburgh Pirates ended a three-game losing streak with a 3-2 victory over the Giants on Friday night.
Casey improved his average in San Francisco to .472 (42-for-89). He is hitting .595 (22-for-37) over his last eight games in San Francisco.
"This game goes in waves," Casey said. "I'm getting good pitches to hit and I'm not missing them. This is one of my favorite parks to come to. I love the background."
Santos, who matched his season high in innings, earned his second win in as many starts in the Giants' new ballpark.
"What we're beginning to see is Victor gaining an understanding of what we are encouraging him to do," Pirates manager Jim Tracy said.
Santos (4-6), who threw his only career complete game here last April 22 with Milwaukee, allowed two runs, walking one and striking out three.
"I love playing here," Santos said. "It's a great atmosphere. It always a big crowd and that helps me get into a groove out there."
Mike Gonzalez got through a rocky ninth inning for his ninth consecutive save. With one out, Moises Alou singled, and one out later Pedro Feliz hit a ground-rule double to put runners on second and third. Gonzalez then walked Jose Vizcaino to load the bases before striking out Eliezer Alfonzo.
"(Pitching coach Jim) Colburn came out to tell me to bear down and that no one will hit my stuff if I'm throwing a good breaking ball," Gonzalez said. "After I walked that guy, I looked at him again and he calmed me down with a couple of words."
The Pirates improved to 2-13 in one-run games on the road and are 7-18 overall.
Barry Bonds missed his third straight game with a sore left side.
"Barry was not available and is questionable for (Saturday)," Giants manager Felipe Alou said. "During the game the trainer told me that he still has the strain and they are afraid he'd aggravate that and then he would be lost for many days. That's why he didn't pinch hit. We'll see about what he looks like."
Matt Morris (3-7) lost to the Pirates for just the third time in his last 14 starts against them. He gave up three runs and eight hits with a walk and a season-high eight strikeouts. He's 10-3 against Pittsburgh in that span.
Jason Bay's 19th home run of the season, and his 12th on the road, gave the Pirates a 3-2 lead in the fourth. Casey opened the inning with a single.
"I fell behind so I needed a strike," Morris said. "I put a heater in there and it ended up costing me the game. I need to be better, especially after getting the lead. I can't just give it back up."
Bay has hit eight home runs and driven in 16 runs in his last 10 road games. He's batting .515 (17-for-33) over that span.
"There are stats to make you look good or bad for anything," Bay said. "It's just one of those things that I'm good on the road."
Casey's RBI double in the first put the Pirates in front 1-0.
The Giants grabbed a 2-1 lead in the third when Alfonzo's first career triple scored Jose Vizcaino, who singled to lead off the inning. Alfonzo scored on Randy Winn's sacrifice fly.
A base-running miscue cost the Giants a possible rally in the sixth. Alou's hit-and-run single with two outs sent Omar Vizquel scurrying toward third. Giants third base coach Gene Glynn waved Vizquel around the bag and then tried to stop him. He was easily thrown out in a brief rundown.
"I was coming hard to third thinking I could score if something goes wrong on the play," Vizquel said. "But they played it perfectly and I was caught too far off the base."
Bay has hit 48 of his 81 career homers on the road. ... Alfonzo's triple in the third inning was the Giants' 26th of the season, matching their total of last year. ... Pirates RHP Kip Wells is scheduled to make his first rehab start on Saturday for Single-A Lynchburg. ... Giants 2B Ray Durham was a late scratch because of stiffness in his neck.