HOUSTON -- Craig Biggio snapped out of his September slump with one huge game.
The loss left the Cardinals' magic number to win a third straight NL Central title at five.
The 40-year-old Biggio went 3-for-5, including a two-run single in the eighth and a double in the first. He came in with only seven hits in 57 at-bats this month.
"Sometimes you come through, sometimes you don't," Biggio said. "When you get your mind-set right, you can come up with big hits."
Biggio's last multi-hit game came on Sept. 1, and since then he's been poring over videotape of his swing. The extra work culminated in his first three-hit game since July 27.
"It's really nice to feel the way I do now," he said. "Thank God for videotape. That has really helped me."
Morgan Ensberg homered for the Astros, who rallied to beat the Cardinals for the second straight night by the same score.
Pinch-hitter Orlando Palmiero tied the game in the ninth with an RBI-double off Braden Looper (9-3), who then gave up Biggio's game-winner. Looper replaced closer Jason Isringhausen, who had hip surgery on Thursday.
"Everyone has to step it up when you lose a guy like that," Looper said of Isringhausen. "Tonight I just didn't do my part."
The Astros, the defending NL champions, and Cincinnati Reds, who beat Chicago 4-2 on Friday, moved within 5½ games of the Cardinals. Houston has won four of five and is still clinging to postseason hopes.
Right-handed aces Roy Oswalt and Roger Clemens will pitch the final two games of the series over the weekend.
"We're taking this opportunity and we're going to do something with it," Astros manager Phil Garner said. "We have something to play for. Thank goodness, we've got something to play for."
Palmiero has 11 pinch-hit RBI this season, six against the Cardinals. He's 7-for-15 against St. Louis this season.
"I don't question how things happen," Palmiero said. "I just take things as they come."
On Thursday night, Palmiero had a two-run RBI-single in the fifth as the Astros also rallied from a 5-2 deficit.
This time, Scott Spiezio put the Cardinals up 4-2 with a two-run triple in the fifth off reliever Russ Springer.
Chris Duncan then homered in the seventh off Brad Lidge, the third solo shot of the game for St. Louis.
Ronnie Belliard and David Eckstein also homered for the Cardinals, who have lost seven of their last eight road games.
"It can get tough, especially when you get down to the last few games," Spiezio said. "And we're still playing well. I think we'd all be a little bit more worried if we weren't playing well."
Chris Narveson made his first major league start for St. Louis, replacing Jason Marquis, who had back spasms. The 24-year-old left-hander allowed two runs and two hits in four innings.
Houston rookie starter Jason Hirsh allowed four runs and five hits in 4 2/3 innings.
Eckstein, starting for the first time since straining an oblique muscle on Aug. 18, hammered Hirsh's third pitch into the seats in left for his second homer.
With two outs in the second, Belliard hit his 11th homer just inside the foul pole in left.
Ensberg tied the game with a two-out solo homer in the third, his 23rd.
With two outs in the Cardinals' fifth, Duncan reached on a fielder's choice and Albert Pujols singled. Spiezio's triple to the gap in left-center then put the Cards up 4-2.
Palmiero and Eric Bruntlett led off the Astros eighth with singles off Adam Wainwright. The runners advanced on a wild pitch and scored on Biggio's single to center.
"I don't care how many oh-fers he has," Garner said, "he came through big time for us, even though he's struggling."
Chad Qualls (6-3) pitched a scoreless ninth for Houston.
- Eckstein hit his fourth career leadoff homer.
- Biggio's double was his 969th extra-base hit and tied him with former Astro Jeff Bagwell for 30th all-time.
- Spiezio has recorded 32 of his 48 RBI with two outs.