DENVER -- All Cecil Cooper wanted out of Roy Oswalt was his typical big performance.
"We need a big game out of Roy," Cooper said before the game with the Colorado Rockies. "We need for him to give us back the momentum we lost in our loss on Friday."
The Houston Astros right-hander gave his manager more.
"Any time he is efficient like that you know he is going to be able to go deeper in the game," Cooper said. "He felt stronger and he was very efficient early. I knew at the end he had a lot left in the tank."
Oswalt (14-9) struck out six, walked two and hit two batters. He threw 102 pitches and gave up only a leadoff single to Brad Hawpe in the fifth inning.
"My fastball was getting in on guys and got me a lot of ground balls," Oswalt said. "I didn't really use many breaking pitches, and when I did, they were down."
It was the third time in Coors Field history that a pitcher threw a one-hitter or better. Hideo Nomo of the Los Angeles Dodgers threw a no hitter on Sept. 17, 1996, and Pat Rapp of the Florida Marlins threw a one-hitter on Sept. 17, 1995.
Oswalt got his fifth career shutout, and first since a two-hitter on June 12, 2005, against Toronto. He extended his scoreless innings streak to 23 1/3 over three starts. After a tough start to the season, Oswalt has been terrific recently, going 8-1 with an 2.12 ERA in his last 11 starts.
Reggie Abercrombie was 3-for-4 with two doubles for the Astros, who won for the ninth time in 10 games and remained seven games back of Milwaukee in the NL wild card race. The Brewers beat the Padres 1-0.
The loss slipped Colorado 5½ games behind the NL West-leading Los Angeles. The Dodgers moved into first place with a 7-2 victory over Arizona.
Jeff Francis (4-9) allowed two runs and seven hits over 6 1/3 innings. Francis, who missed all of July with inflammation in his left shoulder, has put together five quality starts, but has one win to show for it.
"I got outpitched," Francis said. "That guy in the other clubhouse pitched a heck of a game."
Oswalt retired the first 12 Rockies he faced, striking out three over the first four innings. Hawpe lined a ball under Oswalt's glove and into center for a single to open the fifth and two outs later he hit Chris Iannetta before getting Troy Tulowitzki to ground out to end the inning.
"I look back now and I wish I could have gotten my glove down on the ball that Hawpe hit back up the middle," Oswalt said. "I thought it was going to bounce up, but it stayed down and went right under my glove."
Francis couldn't escape trouble in the sixth after Miguel Tejada singled past shortstop with one out. Berkman lined out to second base, but Pence hit a 3-1 pitch into the left seats for his 21st home and give the Houston a 2-0 lead.
Oswalt finished strong by ending the game striking out Hawpe and Garrett Atkins.
"Time is slipping away, we need to win as much as we can, but there isn't much you can do about this one," Colorado manager Clint Hurdle said. "That guy had electric stuff thrown by a guy at the top of his game."
- OF Ty Wigginton left the game in the first inning, straining his left groin running out a ground ball. He is listed as day to day.
- 3B Ian Stewart robbed Ausmus of a hit with a leaping grab of a line drive in the third inning.
- No timetable has been given for the return of Rockies C Yorvit Torrealba, who had arthroscopic surgery on his left knee last Wednesday.