Carlos Martinez took a no-hitter into the sixth inning, Jeremy Hazelbaker and Brandon Moss hit home runs and the St. Louis Cardinals beat the Houston Astros 8-2 Wednesday.

The Cardinals have won four straight and have a slim hold on the second NL wild-card spot over the Pirates and Marlins.

Martinez (11-7) pitched seven innings of three-hit ball, allowing a run while striking out seven. He retired 15 of the first 16 batters before giving up a leadoff double to Teoscar Hernandez in the sixth. Martinez leads St. Louis pitchers with 11 starts of seven or more innings.

Martinez had allowed 14 runs over his previous three starts.

Doug Fister (11-8) allowed four runs in four innings for Houston.