HOUSTON (AP) Cardinals right-hander Carlos Martinez ended a tough stretch in emphatic fashion Wednesday.
Martinez took a no-hitter into the sixth, Jeremy Hazelbaker and Brandon Moss hit home runs and St. Louis beat the Houston Astros 8-2.
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 had allowed 14 runs over his previous three starts.
''He's been impressive,'' Cardinals manager Mike Matheny said. ''I enjoy watching guys improve. When you see him pitch like that and maintain like that, that's improvement.''
Martinez leads St. Louis pitchers with 11 starts of seven or more innings.
''Every day I go out on the hill focused on my work and ready to go through nine innings hopefully,'' Martinez said. ''Some days there's bad days, some days there's good days like today. I stayed focused and I felt really good. I feel like it's just part of the game and I went out and did the best I could.''
The Cardinals have won four straight and have a slim lead for the second NL wild-card spot over the Pirates and Marlins.
St. Louis is averaging 7.5 runs per game during this winning streak and began its offensive frenzy Wednesday in the third inning against starter Doug Fister.
Eight Cardinals batted in the three-run third, highlighted by Stephen Piscotty's two-run single and Yadier Molina's RBI double.
Hazelbaker bashed a 3-2 pitch from Fister in the fourth for his first home run since July 29. Moss blew it open in the seventh with a three-run homer off Tony Sipp.
Moss has four home runs in the last six games and leads the Cardinals with 22 homers in just 281 at-bats. It's a nice resurgence for the 32-year-old, who hit .250 with four homers in 51 games last season after being acquired from Cleveland in July.
''Seems like everybody discounted everything he did before he got to us,'' Matheny said. ''That was a bunch of homers. Then he comes over smoking the ball and not getting anything for it. You could just see where he was trending and where he continues to trend. This guy's got legitimate big power.''
St. Louis has 49 home runs since the All-Star break to lead the National League.
''It's good we're just having good approaches and obviously we're having success at the plate,'' Hazelbaker said. ''It comes from preparation and just knowing what we're capable of and just being prepared every at-bat.''
Fister (11-8) gave up four runs, seven hits and a walk while striking three in four innings.
''It was a disappointing day,'' Fister said. ''Any loss is a tough loss to swallow. I felt good today. I felt strong, I felt in control, but they put a few good swings on balls, and the ball bounced their way today.''
Fister has allowed four or more runs five times in his past 10 starts after reaching that mark once in his first 14 outings this season.
Alex Bregman drove in Hernandez with a single in the sixth. The rookie has seven RBIs in the last 11 games and is batting .312 in that time.
Houston has been outscored 29-11 during a four-game losing streak and surrendered eight or more runs in three straight games for the first time this season.
''The rollercoaster ride that we've been on is no fun when we're in this portion of it,'' Astros manager A.J. Hinch said. ''This game will test your character, it'll test your resolve, it'll test your ability to come back from adversity and this is another test for us. We've got the better part of six weeks left in the regular season, and we need to compile some wins.''
Cardinals: RHP Adam Wainwright (9-7, 4.72 ERA) starts against Philadelphia on Friday. Wainwright is looking for his eighth season with 10 or more wins and needs four to tie Dizzy Dean (134) on the Cardinals career list.
Astros: RHP Joe Musgrove (1-0, 1.47 ERA) starts against Baltimore on Thursday after getting his first major league win against Toronto on Friday.