His fourth hit snapped a 2-2 tie with two outs in the inning, scoring Chris Dickerson from third base.
Dickerson had two hits and one RBI.
The winner was closer Francisco Cordero (1-2) after his scoreless 10th.
Starter Aaron Harang, the first of four Cincinnati pitchers, yielded two earned runs and just four hits in seven innings with three walks and eight strikeouts.
Arizona scored on Chad Tracy's second-inning single and a solo homer by Mark Reynolds in the sixth.
Two others had one hit apiece for the Diamondbacks, who have lost seven of eight.
The losing pitcher was Clay Zavada (1-2).