SAN FRANCISCO Zack Greinke pitched eight innings of two-hit ball and Paul Goldschmidt hit a two-run homer as the Arizona Diamondbacks defeated the San Francisco Giants 2-0 on Saturday night.