But the difference-maker was much-scrutinized and oft-maligned left fielder Chris Duncan. Not only did Duncan catch everything hit his way -- five balls in all, including an outstanding play on a first-inning liner -- but he accounted for the two first-inning runs with a two-out single.
"If everybody on our roster was as talented and as a tough a competitor and as a great teammate as that young man, we may never lose," manager Tony La Russa said.
Lohse said, "He made some good plays out there tonight. I can't complain. And you really can't complain when he drives in two runs in the first."
After Lohse departed, the Cardinals bullpen did the rest, with righty Kyle McClellan, lefty Ron Villone, righty Chris Perez and righty Ryan Franklin all recording outs over the final three innings. Franklin did surrender Lance Berkman's 17th homer, a 428-foot poke leading off the ninth.
Franklin, who earned his fourth save, said he had no intention of putting Berkman on to start a potential rally.
"Berkman's a great hitter, but there's no way he can hit a three-run homer," Franklin said. "So what if he hits a home run? I'm not going to pitch around him. Obviously, it was a bad pitch."
CARDINALS 3, ASTROS 2: Kyle Lohse permitted just five hits, including Carlos Lee's 12th homer, as he improved his record to 5-2. Over his last two starts, covering 12 innings, Lohse has allowed only one run. The Cardinals took two games out of three from Houston.