SAN FRANCISCO -- Matt Cain might be too young to get discouraged about the San Francisco Giants' struggles. With an outstanding start at the end of a nightmarish two-week stretch, he reminded his teammates they've still got time to turn it around.
Mark Sweeney, Feliz and Cain each drove in a run with bases-loaded singles to center during a small-ball rally in the sixth, and the Giants hung on for just their second victory in 13 games while falling from first place to last in the mediocre NL West.
They also prevented Colorado from sweeping a series in San Francisco for the first time in franchise history. Barry Bonds even seemed to be recharged, capping one of his best weekends of the season with a hard-hit ground-rule double while scoring two runs.
But Cain (8-8) was the most impressive, baffling the Rockies with power and deception during his third 10-strikeout game of the season. While his teammates' heads have drooped during the skid, the 21-year-old rookie right-hander remains optimistic.
"I'm definitely going to (savor) this one because of the situation we're in right now," Cain said. "We've got a lot of games left. If we get on a roll, it will work out fine for us. We're not that far out anyway."
Cain allowed six hits and walked just one batter, striking out Colorado cleanup hitter Matt Holliday three times while mowing down the Rockies' lineup. He even picked up his first career RBI, driving in the final run of San Francisco's three-run sixth.
Cain's best outings have been outstanding this season: He pitched a one-hitter against Oakland in May and was four outs away from a no-hitter against the Angels in June. But he had lost his last two starts before he baffled the Rockies on the final day before the Giants open a 10-game trip.
"We've been getting some real good starting pitching here, almost all year," manager Felipe Alou said. "If we could put it together with some saves, some holds in the eighth inning, that would translate to a couple of more wins."
Alou hopes the victory ended an embarrassing stretch for the Giants, who lost nine straight during their skid. The Rockies have endured their share of stumbles this season, but they've been playing much better baseball than San Francisco in recent weeks, winning seven of 10 despite this loss.
"We felt the West was a swinging gate," said manager Clint Hurdle, whose club opens a four-game series against streaking Los Angeles on Monday night. "Our goal was to get to .500, and we couldn't pull it off today. Hopefully we'll be more focused and more determined next time out."
Garrett Atkins hit his 16th homer for the Rockies, who won two of three in San Francisco despite managing just 18 hits in the series.
Cain struck out the side in the seventh, finishing off pinch-hitter Jason Smith with his 110th pitch. Only former Giants catcher Yorvit Torrealba had much success against Cain, with an RBI single, a triple and a walk.
Aaron Cook (7-10) nearly added another solid outing to the Rockies' recent stretch of standout starting pitching before falling apart in the sixth. He yielded nine hits and five runs over 5 1/3 innings.
Sweeney's bloop single broke a sixth-inning tie after the Giants' first three batters reached base -- including Bonds, whose ground-rule double bounced near the warning track in the park's deepest section.
"He should have hit it out, honestly," Cook said of his straight-down-the-middle pitch. "I expect to be a better pitcher than I'm pitching right now. I proved to myself I could do it in the last couple of months of last season, and it's frustrating not to be able to do it again."
After getting the first RBI in the sixth, Sweeney drove in Bonds with another run in the seventh when Jorge Piedra lost his popup in the sun.
- Feliz made a slick fielding play in the sixth, reaching back behind his head on the run to snag Helton's foul popup.
- Cain's 12 strikeouts surpassed his 11-strikeout performance against San Diego on July 1.
- The Rockies have won three straight series after losing their previous five.