DENVER -- Madison Bumgarner hit a three-run homer on a night when he struggled on the mound and Brandon Belt drove in four runs, helping the San Francisco Giants hold on for a 9-8 win over the Colorado Rockies in rainy conditions Tuesday.
Belt broke a tie in the fifth with a two-run double. He also brought in a run on a fielder's choice and added a solo homer for the NL West leaders, who are 20-7 on the road since the All-Star break.
Bumgarner was roughed up by the Rockies, allowing five runs and 11 hits in 4 1-3 innings. The lefty gave the Giants a big boost, though, with his bat, sending a 93 mph fastball from Jhoulys Chacin into the left-field seats.
San Francisco's bullpen was stellar heading into the ninth, giving up just one run. But Sergio Romo gave up a two-out, two-run homer to pinch-hitter Tyler Colvin to make things interesting. Lefty Javier Lopez was called in to face Jason Giambi, who popped up to end the game. It was Lopez's seventh save.
George Kontos (2-1) picked up the win by bailing the Giants out of a tight spot in the fifth with two strikeouts.
Chris Nelson, Wilin Rosario, Jordan Pacheco, Matt McBride and Carlos Gonzalez all had RBI singles for the Rockies.
After a shaky outing from Chacin, Carlos Torres (4-2) took over in the fifth and promptly ran into trouble. Belt gave the giants the lead for good when he doubled off the glove of Gonzalez in left. As the ball rolled into the corner, Marco Scutaro and Buster Posey came around to score.
Scutaro has been quite a catalyst for the Giants since he was acquired from the Rockies in late July. He's hit safely in 34 of 43 games since donning a San Francisco uniform.
"For him coming up with some of the big hits with the Giants, I'm not the least bit surprised," Colorado manager Jim Tracy said before the game. "He's a terrific player. He's a very heady player."
Down 4-0 in the fifth, the Giants rallied to tie it. The big blow was Bumgarner's three-run shot -- a no-doubter, too, as Gonzalez briefly turned to give chase before watching it leave the park.
Bumgarner's only other major league homer came three months ago against Houston.
While Bumgarner shined at the plate -- also lacing a single -- he never found a groove on the mound. That's unusual for Bumgarner in this park, where he had allowed just two earned runs in his last three starts at Coors Field.
The quirky Colorado weather befuddled the Giants in the third inning. With San Francisco about to bat, the wind and rain moved in, making the conditions almost look like swirling snow. Chacin yielded two singles, but wiggled out of the jam when Pablo Sandoval flew out.
Then, in the bottom half of the inning, the rain all but vanished.
And the Rockies took full advantage of the change in weather. Chacin ignited a three-run inning with a leadoff double. He later scored when Josh Rutledge hit into a double play. Bumgarner then gave up four straight hits, including run-scoring singles to Rosario and Pacheco.
Colorado scored a run in the second on Nelson's RBI single. Bumgarner escaped any further trouble by getting DJ LeMahieu to hit into an inning-ending double play.
NOTES: The Giants reinstated RHP Clay Hensley (groin) from the disabled list. ... RHP Tim Lincecum (8-14) will start Wednesday against LHP Jeff Francis (5-4). ... Rockies C Ramon Hernandez (hamstring) had an MRI on Tuesday. ... LHP Jorge De La Rosa (elbow) threw 3 2-3 innings and gave up one run Monday for Class-A Modesto. "He feels as normal as anyone would feel (the day after) they've started a game," Tracy said. "I heard nothing about his arm, his elbow. It's all very encouraging."