HOUSTON — Zack Greinke was so good the first time through the Houston's batting order that Arizona manager Chip Hale didn't want to leave his spot in the dugout for even a second for fear of jinxing a special game.

Greinke allowed a hit to start the fourth inning but didn't give up much else, striking out a season-high 11. The Diamondbacks used a three-run seventh inning to beat the Astros and Dallas Keuchel 3-0 Thursday in a matchup of AL Cy Young Award winners.

"It was excellent," Hale said. "It was exactly what we needed, No. 1, getting the length of at least seven innings to help our bullpen out. And he was just masterful out there. He used all his pitches."

Greinke (7-3), the 2009 winner with Kansas City, allowed a season-low four hits — all singles — over seven innings and walked none. He won his fourth straight start and stopped Arizona's three-game skid.

"The first couple of innings was really good and just tried to stay there because throughout the year so far I've done that multiple times and then gotten worse as the game went on," Greinke said. "So today just stayed sharp throughout the entire game."

Houston, which has won its previous five games, missed a chance to sweep the four-game, home-and-home series.

Daniel Hudson struck out two in a perfect eighth. Brad Ziegler allowed one hit in the ninth and got his franchise-record 38th straight save, his 10th this season. He has the longest active saves streak among big league relievers.

Keuchel (3-7), last year's Cy Young winner, gave up three runs and six hits in six-plus innings. He has lost six of seven decisions.

"It just seems like every pitch I throw, the game hinges on it, and that's a tough feeling," Keuchel said. "But Greinke was as good as advertised. I thought the game was a very good pitcher's duel."

The teams were scoreless before Welington Castillo's RBI double off Keuchel. Chris Owings added a run-scoring single and Nick Ahmed a sacrifice fly.

It was the first scoreless outing this season for Greinke, who is 7-1 in his last 10 starts to lower his ERA to 4.29; he started 0-2 with a 9.90 ERA.

Greinke said his slider didn't feel great, but after seeing the results he got with it he leaned on it more.

"The swings they were taking it was acting like it was really good so I started throwing them more as the game went on," he said. "I wasn't real confident with it early on but started feeling better about it as the game went on."

Greinke didn't allow a hit until George Springer's fly ball to shallow centre dropped for a single starting the fourth inning.

Houston didn't get another hit until Tony Kemp singled with one out in the sixth. Jose Altuve singled with two outs to send Kemp to third, but they were stranded when Carlos Correa grounded out.

Keuchel had allowed just two hits, which were both singles, and had retired 10 in a row when Rickie Weeks singled to start the seventh. Castillo's double, which rolled to the wall in centre field, scored Weeks.

"They put two swings on Dallas, really the whole day that created any sort of havoc," manager A.J. Hinch said. "He didn't have much room for error against Greinke."

ELITE COMPANY

Greinke became the third pitcher in franchise history to strike out at least 11 batters without a walk in a scoreless start. He joined Randy Johnson, who did it three times, and Curt Schilling, who accomplished the feat once.

TRAINER'S ROOM

Diamondbacks: LF David Peralta (right wrist inflammation) was to play an extended spring training game on Thursday before likely joining Triple-A Reno to begin a rehabilitation assignment on Saturday. The Diamondbacks hope he can come of the disabled list on Monday.

Astros: Houston catcher Jason Castro was out with a fever. Hinch had hoped he would be able to play on Thursday after Evan Gattis caught 11 innings the night before.

UP NEXT

Diamondbacks: Archie Bradley (2-0, 6.11) will make his fourth start in the opener of a three-game series against the Chicago Cubs on Friday. Bradley pitched a career-high 7 1/3 innings and fanned a career-best nine in a win against the Padres in his last start.

Astros: Doug Fister (4-3, 3.86) is scheduled to start the opener of a three-game set with Oakland on Friday. Fister has won his last three decisions and the Astros have won in each of his last six starts.