Updated

Kyle Lohse pitched seven innings of three-hit ball to earn his seventh consecutive win and the St. Louis Cardinals beat the Houston Astros 4-2 on Wednesday night.

Lohse (13-2) gave up two runs and retired his last 14 batters while improving to 7-0 with a 2.21 ERA in 12 starts since he dropped a 3-2 decision against Kansas City on June 15.

The Cardinals have won consecutive games to grab a half-game lead on Pittsburgh for the second wild-card spot in the National League.

Mitchell Boggs worked the eighth and Jason Motte finished for his 29th save in 34 chances, completing a three-hitter.

Allen Craig extended his hitting streak to a career-best 11 games with a first-inning single and scored a run for St. Louis. Jon Jay, Daniel Descalso and Yadier Molina each drove in a run.

Brett Wallace and Chris Snyder homered for the Astros, who are winless in three games under interim manager Tony DeFrancesco. Houston, which dropped to 12-50 on the road, has lost six straight and is just 7-42 since June 28.

Bud Norris (5-11) allowed three runs and seven hits in six innings to fall to 0-10 with a 6.78 ERA in his last 14 starts.

Wallace went deep in the first and Snyder connected in the third to give the Astros a 2-1 lead. In his previous three starts in August, Lohse had allowed a single run in 19 2-3 innings of work.

St. Louis went ahead for good in the fifth. Rafael Furcal hit a leadoff single, moved up on Lohse's sacrifice and scored on Jay's single to right. Jay eventually scored on a wild pitch to make it 3-2.

Molina singled in Matt Holliday in the eighth.

NOTES: Jake Westbrook (12-9) will pitch for the Cardinals in the series finale against Dallas Keuchel (1-5). St. Louis announced a $9.75 million, one-year contract with Westbrook on Tuesday that includes a mutual option for 2014. ... Houston's Jose Altuve had a double to give him 139 hits, tops among second baseman in the NL. ... Lohse had not allowed two home runs in a game since a 10-7 loss against Atlanta on May 30.