PHOENIX Paul Goldschmidt hit a three-run home run and the Arizona Diamondbacks held on to beat the San Francisco Giants 4-3 on Friday night to give Zack Greinke his 15th win of the season.