Buster Posey hit a home run and drove in two runs to back Matt Cain's seven solid innings and the San Francisco Giants beat the Colorado Rockies 9-3 Saturday.