Oswalt took a perfect-game bid into the seventh inning and struck out a season-high nine as the Astros beat the New York Mets 2-1 Sunday despite getting just one hit.
"Overall, stuff-wise, this was probably the best I've had in a while," Oswalt said. "I had all four pitches working."
Oswalt (11-8), who signed the five-year extension on Tuesday, didn't allow a baserunner until Jose Reyes beat out a bouncer to shortstop leading off the seventh. Adam Everett tried for a barehanded pickup but couldn't come up with the ball.
Oswalt said he didn't start thinking about a perfect game until just before Reyes' at-bat.
"I knew I had a long way to go, nine outs to go," Oswalt said. "Mentally, it's tough. You make one mistake over the plate and they can hurt you."
Oswalt was surprised it lasted that long. He throws mostly strikes and expects opponents to hit him every time he pitches.
"They happen more to guys who don't throw as many strikes as I do," he said. "A lot of times, when you're in the zone so much, a guy can hit it here or there. When you throw a lot of strikes, it's hard to get a no-hitter."
For most of the game, the Mets struggled to even make contact.
Oswalt struck out the side in the third and ended the fourth and fifth innings with strikeouts. He allowed three hits in 7 2/3 innings.
"Roy always has a good fastball," Houston manager Phil Garner said, "but I think his breaking ball was exceptional today. He had great arm action."
The Mets failed to complete what would have been their first three-game sweep in Houston since 1984 and lost for just the second time when allowing a single hit. The first came was against St. Louis on Sept. 14, 1991, when Ray Lankford hit a two-run single off David Cone in a 2-1 game.
"It's a strange game line, but that's baseball," Randolph said. "Not too many opportunities, a sacrifice fly here and there. Real strange game."
Orlando Hernandez (9-10), who hadn't pitched since Aug. 20, struck out four and walked six in 5 1/3 innings as the Mets lost for just the third time in their last 16 games.
The Mets had rested the 40-year-old El Duque because of fatigue, but Hernandez was encouraged by his 106-pitch effort.
"I was feeling good," he said. "My control is still not good sometimes, but I'm feeling good. That's important."
Hernandez walked Oswalt to load the bases in the second but got out of the jam by throwing a called third strike past Willy Taveras. Hernandez walked Craig Biggio leading off the third, then retired 10 in a row.
After El Duque walked Lance Berkman and Aubrey Huff starting the sixth, Mets manager Willie Randolph visited the mound. Hernandez plunked Luke Scott on the right elbow, loading the bases, and Roberto Hernandez relieved.
Before he hit Scott, El Duque convinced Randolph he was OK.
"He was pitching great, said he felt strong," Randolph said. "It was his game to win right there. I trust him, he's throwing great and they had one hit at the time. I wanted to give him the opportunity for him to win the game."
With third baseman Chris Woodward playing back, Everett dropped a bunt between the pitcher's mound and third base as Berkman scored easily.
The way the Astros' offense was sputtering -- again -- Garner thought the suicide squeeze was worth the risk.
"We were having a hard time getting a run across," he said, "so I didn't hesitate to call that."
After Brad Ausmus was intentionally walked to reload the bases, Oswalt got a standing ovation as he stepped to the plate. A career .161 hitter, he tapped a slow grounder to second baseman Jose Valentin and was out by a step.
Oswalt said the close play disappointed him as much as losing the perfect game.
"I thought I was safe," he said. "I was hoping to leg that one out and get another run."
Beltran crashed into the left-field fence and bruised his left knee in Saturday's 4-2 win. Randolph said Beltran could return to the lineup as early as Monday.
- Oswalt started the Astros' last no-hitter, against the New York Yankees on June 11, 2003. He left in the second inning with a strained right groin and relievers Pete Munro, Kirk Saarloos, Lidge, Octavio Dotel and Billy Wagner finished the 8-0 victory, the 10th no-hitter in Astros' history.
- Taveras leads the Astros with 29 stolen bases.