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 on Saturday.