The rookie shortstop's 24th homer this season capped a six-run outburst in the bottom of the fifth.
Garrett Atkins and Matt Holliday had two RBI, one run scored on Emilio Bonifacio’s fifth-inning throwing error, two others had one RBI each, and Atkins had three hits -- as the Rockies won for the ninth time in their last 10 games.
The winner was starter Mark Redman (2-4). He yielded an unearned run and seven hits in five innings, with a walk and six strikeouts -- but a San Diego win Sunday would eliminate the Rockies from post-season contention.
Arizona's lone run scored on Chris Young's RBI single in the third. Young and Conor Jackson had two hits apiece for the NL West champion Diamondbacks, who have split their last four games.
The losing pitcher was starter Edgar Gonzalez (8-4).