MIAMI -- Tim Lincecum extended his second-half pitching surge with another road gem.
Lincecum (11-9) walked three, struck out 10 and hit a batter while lowering his league-leading road ERA to 2.08. He has given up one run or less in six of his last seven starts overall and his ERA since the All-Star break is 1.11.
"These are the dog days and he's in better shape," Giants manager Bruce Bochy said. "It's not easy to go out there in this heat and throw the ball the way he did but because he's gotten himself in better shape. He's having a great August, probably his best August.
"Last year, he probably learned from his struggles in August."
|More on Giants at Marlins|
Lincecum, a two-time Cy Young Award winner, went 0-5 with a 7.82 ERA last August.
"Putting on that weight worked to my benefit," the 5-foot-11, 165-pound Lincecum said. "It's not all good weight, but it lets me retain the water a little bit better, hydrate, and I can last a little bit, have a little bit more stamina heading into the late innings."
Javier Vazquez (7-10) surrendered three runs and five hits in seven innings. He struck out 10 and threw two wild pitches. It was his eighth quality start in his last 11 outings.
Keppinger's first-inning shot extended San Francisco's major league record of consecutive solo home runs to 21.
"We're going to set a record that can never be broken," Bochy said with a smile. "We're on the relentless pursuit of solo home runs right now. But you know what? I'll take them."
The Giants entered having lost 11 of 14. The Marlins snapped a seven-game losing streak on Friday night.
Aubrey Huff's two-out double to left in the sixth scored Cody Ross from second to give San Francisco a 3-0 lead.
Ross led off with a single and advanced on Vazquez's wild pitch. With two outs, Huff lofted a fly down the line, where Logan Morrison failed to catch the ball as he ran into foul territory.
The Giants took a 2-0 lead in the fifth when Nate Schierholtz scored on Vazquez's wild pitch.
Keppinger hit Vazquez's first pitch down the left-field line for a home run with one out in the first.
- After the game, the Marlins announced they had optioned LF Morrison to Triple-A New Orleans (Pacific Coast League) and released veteran IF Wes Helms.
- The Giants placed OF Andres Torres (lower right leg contusion) on the 15-day disabled list and recalled 1B Brandon Belt from Triple-A Fresno.
- Giants OF Carlos Beltran (strained right hand) missed his fifth straight game. "We'll check on him (Sunday). We are getting to the point where we're going to have to make a decision (on whether he goes on the disabled list)," Bochy said.
- Ryan Vogelsong (9-2, 2.48 ERA) will oppose Chris Volstad (5-8, 5.58) in Sunday's series finale. Florida recalled Volstad from Triple-A New Orleans on Friday. The Giants will try to snap a four-series losing streak.
- Before the sixth, former Miami Dolphins QB Dan Marino peeled the Game Countdown on the left field wall to show No. 16, as in 16 games left at Sun Life Stadium before the Marlins move to their new ballpark next year.