Aaron Cook threw a five-hitter to win his fourth straight decision, Willy Taveras had a pair of bunt singles and Matt Holliday added three RBI in Colorado's fourth consecutive victory, 6-1 over the San Francisco Giants on Saturday night.
"Our offense did the right thing tonight and Cook pitched a great game," Taveras said. "We've got some great speed and when we get on, we can do some damage. You saw what could happen tonight."
Cook (4-1) struck out two and walked four on the way to his first complete game of the season and fifth of his career a night after Colorado rallied against the San Francisco bullpen to take the series opener.
Cook shut down Barry Bonds, who has gone 14 games without a homer or an RBI. It is the second-longest RBI drought of his 22-year career.
The San Francisco slugger going 0-for-4 with four groundouts for his fifth straight hitless game. He hasn't homered since May 8 off the Mets' Tom Glavine, and manager Bruce Bochy said afterward that No. 25 would play in Sunday afternoon's series finale. Bonds will likely sit out Tuesday's game against New York at Shea Stadium.
Bonds, who turns 43 on July 24, has gone 41 at-bats and 61 plate appearances without a homer, remaining 10 shy of tying Hank Aaron's career record of 755. During that stretch since the homer, Bonds has drawn 20 walks with seven intentional free passes, struck out eight times and is batting .122.
"We feed off Barry and he knows it," Bochy said.
Holliday had a two-run single, and RBI groundout and doubled to give him 11 extra-base hits in his last 20, seven of those doubles. The Rockies are on their longest winning streak of the season, surpassing the three in a row they won from April 3-6 -- and this is the first time in franchise history that Colorado has won four straight without a home run.
"We got a great start, 18 groundball outs," Colorado manager Clint Hurdle said. "We took advantage of some errors and got some big hits and put it all together tonight."
Colorado took two of three at Arizona before coming to the Bay Area, and has secured both a series victory and a winning road trip -- a first for the club on a multiple-city trip since before the All-Star break last year.
The benches cleared in the eighth after Giants lefty Steve Kline plunked Yorvit Torrealba in the lower back. They exchanged words along the first-base line as Kline walked and pointed toward Torrealba before the umpires and teammates kept them apart. There apparently was still bad blood between the two from a series earlier this month at Coors Field, where Torrealba stole a base on Kline with two outs in the ninth and the Giants leading 15-1.
Kline questioned his team's energy afterward and said it made too many "bonehead" mistakes.
"We're sluggish. We show up and think we can win," he said. "We need some vinegar in our swagger. ... We lost a tough one yesterday but today it was like we didn't show up."
Bonds has added his dangly gold and diamond cross earring back into his uniform attire -- in his left ear -- for the first time in five years.
"Just to have people talk," he said with a smile before the game.
Cook has won his last four decisions after going winless with one loss in his initial six outings of the year. He worked ahead in the count and kept the Giants off balance with an effective mixture of fastballs and off-speed pitches.
"You can put a lot of pressure on hitters when you throw first-pitch strikes," Cook said. "It puts the burden on them."
Giants starter Matt Morris drove in his team's lone run when he chopped a bases-loaded single for a 1-0 lead in the second. Morris, who hasn't beaten the Rockies in three outings since a win on June 1, 2005, plunked Cook with a curveball in the back to put him aboard in the seventh.
The Rockies scored four unearned runs against Morris in the third following fielding errors by third baseman Pedro Feliz and second baseman Ray Durham, who left after the third with a strained abdominal muscle and was replaced by Kevin Frandsen. Durham was listed as day-to-day.
Morris (5-2) got through the first on 11 pitches, then allowed a pair of singles in the second but escaped unscathed.
"He had good stuff, just a lousy ballgame," Bochy said. "We're all embarrassed after that game. The fundamentals got us. We didn't do anything right tonight. ... We got what we deserved."
Morris clearly was frustrated after the loss, quickly making his clubhouse exit.
The Giants loaded the bases in the second for Morris.
Durham followed Bonds' groundout with a single to right, then Feliz doubled one out later and Cook intentionally walked Omar Vizquel to bring up Morris. He hit a slow bouncer toward third and easily beat it out.
Ryan Klesko, who has been one of the Giants' most consistent hitters recently to keep himself in the lineup, went 0-for-4 and grounded into a double play. ... Taveras leads the majors with 13 bunt hits and leads the NL with 19 infield hits. ... Frandsen graduated earlier in the day from San Jose State with a degree in finance.