St. Louis rallied with two runs in the fifth inning and one in the eighth to squeeze past Houston, 4-2, before 35,198 at Busch Stadium.
Right-hander Bud Norris, a Cardinals killer, pitched well enough to win but suffered his 10th successive losing decision. His last win came on May 21 -- an 8-4 triumph over the Chicago Cubs.
Norris (5-11) entered the game with a 7-3 record against St. Louis in his career -- compared to 19-31 against the rest of the Major Leagues.
Houston, which lost its sixth in a row, earned one-run leads when Wallace and Snyder hit solo shots in the first and third innings, respectively. But St. Louis nicked Norris for two runs on three hits in the fifth to go in front for good, 3-2.
St. Louis right-hander Kyle Lohse (13-2) gave up two runs on three hits over seven innings. He improved to 7-1 at home with his seventh successive winning decision.
Norris carried a 2-1 lead into the fifth before Rafael Furcal led off with a single and scored on Jon Jay's hit. Jay ended up on third with two outs before Norris uncorked a wild pitch with Matt Holliday at the plate.
"I was trying to throw a good slider. I got out in front and it just squeaked by Snyder," Norris said. "It's a tough break for sure. But that's how it's been this year, unfortunately."
"It's hard to give up the go-ahead run on a wild pitch, it's hard to watch," DeFrancesco said. "We're going to try to clean that up a bit."
Houston managed just three hits, the last coming on a infield single by Marwin Gonzalez in the third. The Astros went down in order in five of the final six innings. Snyder drew a leadoff walk in the eighth but reliever Mitchell Boggs retired the next three hitters in order.
The Astros have scored three runs in 27 innings under DeFrancesco.
"We were battling; we were trying to string some hits together," Wallace said. "We were able to get a couple balls in the stands -- but not much else."
Lohse said the Astros showed some aggressiveness at the plate.
"You don't want to take anybody for granted," he noted. "It's tough when you've got a bunch of young guys trying to make their way in this game."
"Three hits. It's hard to win ballgames, I don't care who is managing," DeFrancesco said. "There were too many easy outs for me. You've got to try and manufacture something, grind out at-bats. It's a tough hill to climb."
Outfielder Justin Maxwell, who was scratched before the game with a sore right index finger, pinch-ran for Snyder in the eighth.