Troy Tulowitzki had three hits and drove in a run, Jhoulys Chacin pitched six effective innings and the Colorado Rockies beat the San Francisco Giants 2-1 on Saturday.

Chacin (6-4) allowed one run and four hits to end a personal two-game losing streak and help the Rockies win in San Francisco for the first time in five games.

Cody Ross homered on his bobblehead day but the Giants still lost a three-game winning streak. Madison Bumgarner (2-7) yielded an earned run and seven hits over seven innings.

Tulowitzki singled and scored on a throwing error by shortstop Brandon Crawford in the fifth, then added an RBI single in the sixth that gave the Rockies a 2-0 lead. The star shortstop is a career .298 hitter in San Francisco.

Ross hit his fifth homer with two out in the bottom half of the sixth.

Matt Lindstrom and Rafael Betancourt each threw a scoreless inning before Huston Street got three outs for his 15th save in 17 chances.

The Rockies found a way to win despite their continued lack of production. They have scored three runs or fewer in 12 of their last 14 games and are 4-10 over that span.

Bumgarner faced the minimum through four innings. He struck out six and walked one, but is 0-3 with a 4.39 ERA in five home starts this season.

The Giants have lost five of their last six one-run games after winning their previous 10 such contests.

NOTES: Giants C Chris Stewart made his 15th career start. ... The Rockies placed RHP Matt Daley on the disabled list and recalled LHP Rex Brothers. ... Tulowitzki is hitting .421 (8 for 19) on Colorado's road trip. ... The start of the game was delayed 20 minutes by rain. ... A fan was struck in the face by a foul ball and had to be led off by medics.