SAN FRANCISCO -- Even before three innings had been completed, Brett Tomko received two visits from the team trainer, one for a sore right shoulder, the second when he was hit in the right foot by a line drive.
"I feel beat up but you kind of smell it when you get a lead," Tomko said. "I didn't want to come out of the game. Wins are tough enough to come by."
Pedro Feliz homered for the third straight game and drove in three runs, while Edgardo Alfonzo and Ray Durham both had two RBI to lead the Giants.
Durham and shortstop Omar Vizquel turned in a spectacular double play to end the third inning, and combined again for an extraordinary play in the eighth, both times turning hits into outs.
"You don't see that every day," Feliz said. "These are the times you feel good they are on your team. It's great to see it live and not on television."
Local product Dontrelle Willis suffered through yet another embarrassing loss in San Francisco as the Marlins lost for the eighth time in their last 11 games.
Willis (13-6), who grew up in nearby Alameda, dropped to 0-2 in four career starts against the Giants. He lasted a season-low three innings, giving up seven runs and six hits. He has allowed 23 runs in his last three starts to extend his season-worst losing streak to three.
"We've been playing better ball and obviously I've been struggling," Willis said. "It's one of those things where you think about it going into it. You just want to do well. I want to put up a solid outing."
Willis has given up 18 runs and 17 hits in a total of nine innings in San Francisco.
"I don't know what it is about San Francisco," Marlins manager Jack McKeon said. "We got him nine runs here last year. I have no idea. He gets behind the hitters; he's in trouble. He throws strikes; he'll be fine."
Miguel Cabrera hit a two-run homer and Mike Lowell also homered for the Marlins.
Tomko (7-10) remained unbeaten in six career decisions against the Marlins. He allowed four runs and 10 hits through six innings. Tomko, who fell on his right shoulder in the first and had a line drive hit off his foot in the third, won a second straight decision for the first time since late April.
"I'm pretty sore but nothing is broken," Tomko said. "The plays Ray and Omar made are about as good as you're going to see. Those are key plays."
Tyler Walker worked the ninth for his 15th save as San Francisco won for the eighth time in 13 games.
Cabrera gave Florida a 2-0 lead with his 21st homer in the first. Lowell's first road home run, leading off the second, made it 3-0.
The first four hitters reached base against Willis in the second with Alfonzo's single driving in a run. Alfonzo was activated from the disabled list Friday and played in his first game since June 12 when he injured his leg.
"It's just nice to be back and healthy," Alfonzo said. "I just tried to do my thing and put the ball in play. This is a good sign for me."
Feliz singled home another run and Alfonzo came around to score on the play when left fielder Cabrera dropped the ball to tie it at 3-all.
Juan Encarnacion hit a sacrifice fly in the third for a 4-3 Florida lead but it was all Giants afterward.
Feliz's two-run homer highlighted a four-run third that ended Willis' night. Durham and Alfonzo also drove in runs as the Giants took a 7-4 lead.
"I don't think too much when I go to the plate," Feliz said. "I just want to hit the ball hard."
Durham's single made it 8-4 in the fifth.
Paul Lo Duca singled home a run for the Marlins in the seventh.
Ismael Valdez pitched two innings in his season debut. Valdez, who was activated off the DL earlier Friday, had been out since a minor league start in early April when he was hit by a line drive and had a hairline fracture in his right fibula.
LHP Scott Olsen was sent to Double-A Carolina to make room for Valdez. ... OF Adam Shabala was optioned to Triple-A Fresno to make way for Alfonzo. ... The Marlins have not won the opener of a three-game series since June 24. ... The Marlins fell to 4-13 at SBC Park. ... Giants RHP LaTroy Hawkins has not allowed a run in his last eight appearances.