Oswalt became the first Phillies pitcher to play a position in the field in 39 years after Ryan Howard was ejected in the 14th inning.
"I'm not sure what I think about the whole situation," right fielder Jayson Werth said. "I think I'll take a nap, wake up refreshed and pretend the whole think didn't happen."
Oswalt caught a routine fly ball from Astros catcher Jason Castro, earning a loud ovation from the fans who remained. The last pitcher to play a position was Bill Wilson on Aug. 6, 1971. Oswalt was forced to go into the outfield with Philadelphia out of position players. Raul Ibanez took over at first for Howard.
"There's a saying in baseball, the ball will find you when you're out of position," said Ibanez, who also recorded a putout on a diving play at first base. "The ball found him and he caught it."
Oswalt didn't address the media after the game.
Phillies manager Charlie Manuel said he decided to put Oswalt in the outfield because of his athleticism. The former Astros pitcher routinely shags fly balls in the outfield during batting practice.
Howard was tossed by third base umpire Scott Barry after being rung up on a check swing, the second one of the at-bat. He threw his bat and helmet after striking out for the fifth time, causing the ejection, then charged toward Barry, gesturing wildly. Howard finished the game hitless in seven at-bats with five strikeouts.
He left the clubhouse after the game and didn't speak with reporters.
"I've seen him mad, but never upset like that," Manuel said.
The Astros scored twice runs in the top of the 16th. They loaded the bases with one out off David Herndon (1-3) on a single, hit batsman and walk. Chris Johnson grounded hard to third base, reaching on an infield single for the go-ahead run.
Houston scored again on Tommy Manzella's fielder's choice.
The Phillies got the tying run to the plate in the bottom of the inning after Placido Polanco walked with two outs. Houston intentionally walked Chase Utley to bring up Oswalt, who grounded to third to end the game.
Astros manager Brad Mills said he didn't have visions of a game-winning hit.
"I had visions of an out," Mills said. "I had no visions of a hit."
Philadelphia was trailing 2-1 in the bottom of the ninth with two outs when Jimmy Rollins tied the game with a solo homer off Wilton Lopez, who was trying for a four-out save.
Carlos Lee homered and Bud Norris allowed one run in six innings for Houston, which led 2-1 heading into the ninth inning.
Before the wild extra innings, the Philadelphia continued to offer no support for starter Cole Hamels, and kept him winless since a 1-0 win July 11. The Phillies finally scored a run for him - their first in 25 2-3 innings while he was in the game - when Ibanez's two-out double in the sixth scored Werth, who had singled.
Hamels left for a pinch hitter in the bottom of the seventh, after allowing two runs on five hits, including Lee's two-run homer in the fourth, and struck out eight.
Besieged by myriad injuries this season, the Phillies had their regular starting eight in the lineup for the first time since May 21, vs. Boston. It didn't help against the Astros, who took the first two games of a four-game set in Philadelphia.
Norris continued a three-start run of good pitching, allowing five hits and striking out four. He has a 2.25 ERA in that span. Tim Byrdak and Gustavo Chacin worked into the eighth.
The Phillies threatened against Byrdak in the seventh, when Rollins and Polanco drew one-out walks. But Rollins was thrown out on the front end of a double steal and Utley flew to right, ending the rally.
For Rollins, it snapped a string of 30 straight successful stolen-base attempts, dating to July 22, 2009.
Notes: The Phillies signed minor-leaguer Nate Robertson to a minor-league deal on Tuesday, and assigned him to Triple-A Lehigh Valley. He is scheduled to start Thursday for the IronPigs. He pitched this season for the Marlins and for St. Louis' Triple-A team, Memphis. ... Kyle Lohse played the outfield for three innings for the Cardinals against the Mets on April 17 this season according to STATS LLC. He recorded two putouts. ... Phillies starter Roy Halladay presented each of his teammates with a Baume and Mercier watch to commemorate his May 29 perfect game against Florida. Each was personalized and included box score on the back of the face. The watches came in a wooden box that included a message: "We did it together. Thanks, Roy Halladay."