MIAMI -- San Francisco manager Bruce Bochy believes his team hasn't gotten its share of breaks this season.
The Giants got plenty Sunday.
San Francisco scored three times off a trio of seventh-inning errors, then watched Florida match a season-high by stranding 14 runners -- five in the last two innings -- in a 6-5 victory over the Marlins, who've lost all three games of this series.
"In this game part of it is getting breaks and a little luck," Bochy said. "The last couple games it's gone our way."
Ray Durham hit his 10th homer and Kevin Frandsen added his third for San Francisco, which has won four straight. Miami native Vinnie Chulk (5-4) got the win after retiring two batters in the sixth, and Brad Hennessey stranded runners on the corners in the ninth for his 12th save in 14 chances.
Giants slugger Barry Bonds, who extended baseball's home run record to 760 on Saturday, got the day off. It's unknown if he'll play in Monday's series finale, another afternoon game.
Josh Willingham had three hits, including his 19th homer, and drove in two runs for Florida. Miguel Cabrera added two hits and two RBI for the Marlins, who have dropped five straight.
"This might be the toughest one," Florida starter Dontrelle Willis said.
The seventh inning made it that way.
Problems began when Guillermo Rodriguez's leadoff grounder was bobbled by shortstop Hanley Ramirez. Two batters later, Rajai Davis' sacrifice bunt was thrown away by Florida reliever Lee Gardner (3-4) for a second error, and the third came on the same play when right fielder Cody Ross' throw to second sailed wide.
Rodriguez and Ryan Klesko scored on the botched bunt. Davis scored, oddly enough, on a nifty defensive play by Ross, who dove over the bullpen wall to catch a fly ball hit by Daniel Ortmeier.
Florida has 102 errors this season, most in the majors.
"I think that was probably one of the worst innings we've ever had defensively," Marlins manager Fredi Gonzalez said. "You keep giving outs to the other team, they're going to put a number up on the board. It was frustrating, even watching on TV."
Gonzalez was ejected following the fourth inning. Ross struck out looking to end the inning and slammed his helmet and bat, prompting crew chief Tim McClelland -- the second-base umpire -- to threaten him with a fine, Ross said.
Gonzalez argued with McClelland, who kicked him out.
"I didn't say anything. I was just upset," Ross said. "McClelland came and got in my face. I guess it's because I'm young or whatever. Doesn't matter."
The Marlins got within 6-4 in the seventh on Willingham's homer, then closed to 6-5 in the eighth on Ramirez's RBI popup that fell into short right field. But with the bases loaded, Willingham hit a hard line drive to left for the second out, and Giants reliever Patrick Misch -- summoned for a lefty-lefty matchup -- got Mike Jacobs to ground out and end the threat.
"The bullpen came in and closed the door," Giants starter Noah Lowry said.
Willis had allowed only nine home runs in 251 innings during daytime starts in his career, but yielded two in the first 2 2/3 innings to fall behind 3-0. Frandsen hit a solo shot with two out in the second, and Durham connected for a two-run homer in the third.
But Willis started Florida's three-run rally against Lowry in the fifth.
Lowry retired nine straight before Willis singled with one out. He and Ramirez scored on Cabrera's two-out double, and Cabrera came across one pitch later when Willingham doubled to left-center.
Lowry allowed five hits, struck out three and walked five in 5 1/3 innings. Willis -- who failed in his bid to win consecutive starts for the first time since April -- 4 one walk while striking out three in six innings, and needed 116 pitches to complete those.
Klesko didn't enter until the sixth and finished with two hits. ... Lowry remained unbeaten in August; he's 11-0 in 19 starts in that month. ... Willis' ERA in day games this season rose from 1.69 to 2.45. ... Ross entered hitting .432 against left-handers, but went 0-for-3 against Lowry.