The Astros have lost 14 of their past 18 games on the road and will face 14-game winner Chris Carpenter in Thursday's series finale. They were shut out by the Cardinals on Tuesday in a game started by 15-game winner Adam Wainwright, and on Wednesday they didn't do much better against Joel Pineiro.
Oswalt (7-5) gave up three runs in the first inning, and the Astros' offense couldn't recover. Oswalt tied a season high by allowing 10 hits in six innings, but he pitched his way out of trouble on several occasions to give Houston a chance.
Pineiro (13-9) held the Astros to seven singles and two runs and didn't walk a batter in eight innings. Houston had only one inning -- the fourth - when it had more than one runner reach base.
Oswalt has seen enough.
"We've got an owner that pays us money to come to play, and we've got to play," he said. "If you don't give 100 percent, you're cheating him and cheating the fans of Houston. You've got to come out there and give everything you've got, and if you don't, you're cheating the fans coming to pay [to watch us play] the game."
Oswalt, who saw his five-game winning streak snapped, would like to see a change in atmosphere over the final 36 games.
"It starts from the top," he said. "You've got to get it from the top, to come in and get us going. You can't play dead, especially against guys in first place. They're going to come out and give you everything you've got, and you've got to play it out."
Oswalt allowed four of the first five batters he faced in the first inning to reach via a base hit, with the only out coming on a strikeout of Albert Pujols. Matt Holliday had an RBI single, and Mark DeRosa doubled to left field to score two runs and put the Cardinals ahead, 3-0.
"The first inning I got in a little bit of hole there," Oswalt said. "I made a decent pitch to DeRosa, but he just kind of stuck the bat out there and it found a hole. Other than that, that was about all I could do."
"Roy is a pitcher that trusts his stuff," DeRosa said. "He pitches to his strengths and not to hitters' weaknesses. He comes at you with his fastball and he has that slow, loopy curveball. I like facing guys who come right at you. He's a guy I have a lot of respect for. I got a chance to play with him on [World Baseball Classic] team, and I think he's a great pitcher."
Those were the only three runs allowed in six innings of work by Oswalt, who pitched out of jams in the fourth, fifth and sixth innings. St. Louis left the bases loaded in the fourth and fifth and stranded two more in the sixth.
"He gave us a chance to win, and that's all you can ask of your starting pitcher -- is to go out and give us a chance to win," Astros manager Cecil Cooper said. "He wasn't as sharp as he normally is, but he had to battle. In the first, he really had to make pitches to get out of that first, and he had to do that in the fourth, the fifth and sixth and got the pitch count up."
The Astros sliced the lead to 3-2 in the fourth, when Michael Bourn, Hunter Pence, Lance Berkman and Carlos Lee began the inning with four consecutive singles, with Berkman and Lee picking up RBIs before Miguel Tejada (0-for-4) hit into a double play.
Pineiro threw only 87 pitches in eight innings, including 63 strikes.
"They've got some good pitching, that's why they're doing so well," Pence said. "Those guys are all have [low] ERAs. Sure you want to hit everybody, and right now the offense hasn't totally clicked. It was good to see Carlos put some good swings on the ball. Pineiro had some good, late movement."
Lee (3-for-4) doubled with one out in the ninth against Cardinals closer Ryan Franklin, who responded by getting Tejada and Jeff Keppinger to ground out to end the game and strand the tying run at third.