Cody Ross, Brandon Belt and Chris Stewart all homered and Aubrey Huff picked up three hits, including a double, for the Giants, who have won six straight. They moved within five games of the Atlanta Braves in the chase for the National League wild card.
Madison Bumgarner (12-12) gave up one unearned run on six hits over seven innings while fanning three and walking one. He also contributed offensively with a pair of hits.
"I just wanted to go out there and go deep in the game," Bumgarner said.
Jordan Pacheco had three hits, Thomas Field picked up two hits and Wilin Rosario scored the only run for the Rockies, losers in three of their last four games.
Alex White (2-2) lasted 5 2/3 innings, giving up six runs on nine hits while striking out three and walking three.
"I just wanted to give them the innings and get the work in," White said. "Hopefully I can get all this stuff out of the way before next year."
San Francisco broke the scoreless tie in the fourth when Belt crushed a slider from White over the wall in right-center field to give the Giants a 2-0 lead.
The Giants added a run in the fifth when Ross clubbed a solo homer deep into the seats in right-center field to expand the advantage to 3-0.
Colorado pulled a run back in the home half of the frame. Rosario worked a leadoff walk and Field singled to put runners on first and second. A sacrifice bunt by White moved both runners up and, after Eric Young Jr. flied out, Dexter Fowler cued a ball to third that Pablo Sandoval couldn't handle, allowing Rosario to score and cut the deficit to two.
The Giants came back with three runs in the sixth to take a 6-1 lead. Brandon Crawford got things started with a two-out walk and Chris Stewart was hit by a pitch. Bumgarner then helped his own cause by cracking a two-run double to center, and Ross followed with an RBI single to plate Bumgarner.
San Francisco kept the gas pedal down in the seventh, plating three more runs to take a commanding 9-1 lead. Huff ripped a one-out double and pinch-runner Justin Christan came around to score on a single by Crawford. Stewart followed by punishing a fastball from Aaron Cook for a two-run homer, his second of the season.
Colorado is 23-20 against left-handed starters in 2011...Rockies second baseman Mark Ellis had his eight-game hitting streak snapped...Giants right fielder Carlos Beltran is hitting .410 against the National League West since joining the Giants at the trade deadline...Ross's home run in the fifth gave him 100 for his career. He was removed from the game in the seventh with an injury to his leg...Rockies shortstop Troy Tulowitzki missed a third straight game with bursitis in his left hip.