PHOENIX -- Josh Collmenter was locked in, throwing strikes, watching his teammates make spectacular plays and turn double plays.
As the game wore on, he started to notice that the same hitters kept coming up every three innings.
Not quite perfect, but not that far off.
Turning in the most dominant start of his career, Collmenter joined Randy Johnson as the only Arizona pitchers to face the minimum in a nine-inning game, tossing a three-hitter in the Diamondbacks' 4-0 win over the light-hitting Cincinnati Reds Thursday night.
"In the eighth I looked up just to see and at that point you're kind of cognizant of what you have to do," Collmenter said. "You get those guys, then you set yourself up for seven, eight and the pinch hitter."
Collmenter got those final three hitters and plenty of help from his teammates.
The defense was stellar, making a handful of spectacular players and erasing the runners who did reach base.
Collmenter (4-2) was sharp from the first pitch, breezing through his first career complete game by mixing speeds and hitting both sides of the plate.
He didn't quite match Johnson, who had a perfect game in 2004 against Atlanta, but faced the same number of hitters. Collmenter also becomes the 13th player since 1914 to allow three or more hits and face the minimum 27 batters in a nine-inning game.
"He was just kind of in the zone, throwing his pitches right where he wanted them," said Arizona manager Kirk Gibson, whose team has won five of seven.
The Reds have had trouble converting with runners in scoring position this season. They had one against the Diamondbacks, 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.
"We didn't barrel many balls," Reds manager Bryan Price said. "In part credit to him and in part a testament to the fact that we haven't been swinging the bats very well."
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.
"He made quality strikes and got bad contact," Diamondbacks catcher Tuffy Gosewisch said. "They hit a few balls hard and we played great defense and turned a double play here and there."
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.
"I was just trying to get my rhythm going and build off each outing and try to find my groove," Cingrani said. "I will hit it sooner or later."
Collmenter certainly has.
Diamondbacks C Miguel Montero, who leads the majors with 48 games caught, was given the night off. ... The error by Mesoraco in the first inning was the 24th by the Reds, still fewest in the majors. ... Arizona RHP Bronson Arroyo, Friday's starter against the Reds, played the previous eight seasons in Cincinnati. He is 3-1 with a 1.90 ERA his last six starts. RHP Mike Leake will start for Cincinnati after allowing two runs in six innings of a 2-0 loss to St. Louis his last start.