Collmenter (4-2) breezed through his first career complete game, joining Randy Johnson as the only Arizona pitcher to face the minimum 27 batters in a nine-inning game. Johnson did it during his perfect game against Atlanta in 2004.
Hill, who went 1 for 10 in a three-game series against San Diego, had three hits, including a solo homer in the sixth inning off Tony Cingrani (2-5). A.J. Pollock had a double, a triple and scored two runs from the leadoff spot for the Diamondbacks, who have won five of seven.
The Reds had one runner reach second base, Brayan Pena in the third inning, and he was thrown out at third after tagging up on a flyball to center.
Cincinnati has lost five of six after being shut out for the sixth time this season.
Collmenter has been on a roll over the past month, going 3-0 with a 3.60 ERA in six starts.
The over-the-top-throwing right-hander kept it going against the Reds, with help from his defense.
The Diamondbacks turned three double plays behind him, including a catch-and-throw by Pollock in center to get Pena at third in the second inning.
Hill also had a diving stop up the middle to rob Todd Frazier of a hit in the seventh inning and made a tough stop on a grounder by Pena in the ninth.
Collmenter struck out five and walked none to win his third straight start and fourth straight decision.
Cingrani wasn't quite as good, though managed to limit the damage.
The left-hander had struggled a bit since coming off the disabled list (shoulder), allowing four runs in each of his past two starts.
Arizona scored a run off Cingrani in the first inning, when Pollock led off with a double, stole third and scored when catcher Devin Mesoraco's throw bounced into left field for an error.
Hill hit a solo homer to left in the fourth inning, his fifth of the season, and chased Cingrani with a run-scoring single up the middle in the sixth.
Cingrani allowed three runs on seven hits in five innings.