"Made a minor adjustment, started more on the plate and was able to throw some four-seams after the second and really calmed down and made some quality pitches," Keuchel said.
He steadied to retire 12 of the final 13 hitters he faced -- the only blemish a rare error on Jose Altuve that allowed Nick Ahmed to reach first.
Astros pitchers held the D-backs hitless after Keuchel's erratic second inning.
"He really maintained his composure more than anything and didn't let that inning spiral into something bigger or leak into the rest of his outing," said Astros manager A.J. Hinch. "He certainly responded back with some really good stuff in the strike zone, struck out some guys, and got into a really good rhythm as the game progressed."
Keuchel's six-inning stint marked the 33rd consecutive time he's gone six or more innings -- a franchise record. He's now 10-0 at Minute Maid Park, the first pitcher since Zack Greinke in 2011 to win his first 10 starts at home.
"They were doing a good job of laying off the tough pitches and they got two runs off of me there in the second," Keuchel said. "But I felt great out of the bullpen and was lucky enough to get through six."
He wanted to go a bit longer, though, even at 108 pitches.
"He responded well and in typical Keuchel fashion, he was ready to go out for the inning after I took him out," Hinch said. "So he was fine."
Chandler Rome is an associate reporter for MLB.com. This story was not subject to the approval of Major League Baseball or its clubs.