"I thought today was without question his best outing this year, and it was probably the second-best outing that I've ever seen him throw," said Astros manager Cecil Cooper. "He was outstanding."
Cooper said the outing was Oswalt's best since 2005, when he allowed one run on three hits in a seven innings against St. Louis to clinch the National League pennant.
Oswalt said he felt good, although not his best. He said he just got a better outcome this time.
"A few guys hit the ball pretty decent, but I got them to hit it right at guys," he said. "I had all my pitches. I didn't feel like I had to pitch around anything."
Oswalt, who was on the 15-day disabled list in July for a strained left hip abductor, said he knew the Astros' bullpen was worn out following two days of heavy use, so he tried to pitch as long as he could.
"I tried to at least get through seven, that way they'd only have to pick up six outs," Oswalt said. "I got through the eighth so they only used one guy instead of two."
The only close call to end the shutout was in the third. Oswalt walked Chris Snyder, who reached second on a bunt and attempted to score on Drew's single. But Hunter Pence threw a bullet from right field to catcher Brad Ausmus, who tagged Snyder out at home.
Oswalt struck out the last batter he faced, Snyder, in the top of the eighth. He threw 105 pitches, 73 for strikes, before being pulled for Jose Valverde to pitch the ninth.
Cooper said Oswalt appeared to be running on fumes at the end.
"I started getting a little bit tired in the eighth, laboring a bit," Oswalt said. "I felt myself coming off the ball some. The ball was tailing back over the plate. I had enough to get through the eighth."
Valverde finished with two flyouts before giving up another single to Drew, Arizona's second hit of the game. But a flyout by Chris Young ended it.
Valverde said Cooper had warned him before the game that he might need extra from him.
"Cooper told me today, I could throw two innings, 1 2/3 innings or something like that," he said. "I know my bullpen was pushed too much the last couple games. They asked me if I could throw more, so I had to be ready."
Ty Wigginton, the Astros' go-to bat these days, drove in the only runs of the game with a three-run homer to the Crawford Boxes in left field in the first inning.
Randy Johnson walked the No. 2 batter, Mark Loretta, who reached second on a single to left by Miguel Tejada, and Wigginton came up two batters later for the two-out home run.
"Right there I was looking for a pitch middle-in from Randy," Wigginton said. "He was probably trying to go in and made a mistake and of course I was able to get it. I've felt all along that if I get my at-bats then everything will be there in the end, and I think it's helped that I've gotten them consistently lately."
Wigginton, who has replaced the injured Carlos Lee in the somewhat unfamiliar territory of left field, has seemed to take to the new position.
Lee joked in the dugout that all you had to do was put someone in left field to get them to start hitting. He was the best batter in the Majors for the second half of the season before breaking his left pinky finger.
"We're going to keep riding him for as long as we can, because he's hot," Cooper said of Wigginton, who usually plays third base. "I said after the game, 'I'm going to touch him and see if it'll burn me,' because he's really swinging it good, really hot."
Johnson didn't give up any more runs after Wigginton's homer, and he allowed nine hits and struck out four in seven innings. Former Astros pitcher Chad Qualls closed out the game for the Diamondbacks giving up a hit and a getting a strikeout.
The Astros go on the road for three games against Milwaukee, and Cooper said he wished Oswalt could pitch again on Monday.
"What a performance by Roy," Lance Berkman said. "This was probably the best game I've seen him throw in two or three years. He was just dominant. Now we just can't afford to worry about too much of what's in front of us."