Miles Mikolas' outing against the San Francisco Giants was typical, and typical for him is pretty good.
Mikolas won his fourth straight start, Matt Carpenter hit his NL-leading 36th homer and the Cardinals beat the Giants 9-2 to complete a three-game sweep and remain on track for the NL's second wild card.
St. Louis (87-69) has won three straight games and six of seven. The Cardinals remained 1 1/2 games ahead of Colorado (85-70) and two games behind Milwaukee, the wild card leader. St. Louis hosts the Brewers (89-67) in a three-game series starting Monday night.
Mikolas (17-4) allowed two runs - one earned - and two hits in seven innings with eight strikeouts and no walks. John Brebbia and Giovanny Gallegos, who made his Cardinals debut, finished a five-hitter.
Mikolas has made 11 starts of at least seven innings and the two hits he gave up were a season low.
Andrew Suarez (7-12) gave up two runs and six hits in five innings as San Francisco gave him three runs or less of run support during his time in the game for the 21st time this season. The Giants finished 31-50 on the road for a two-year record of 57-105 away from home.
San Francisco has lost 10 straight road games against NL Central teams since winning at the Chicago Cubs on May 27.
The bottom two in the Cardinals batting order built a 2-0 lead with two-out singles, by Yairo Munoz in the second and Mikolas in the fourth.
Harrison Bader bunted in a run to spark a five-run sixth that includes RBI singles by Munoz and Paul DeJong around Jose Martinez's two-run double. Carpenter hit a two-run homer off Casey Kelly in the eighth.
Brandon Crawford's two-run homer in the seventh stopped an 0-for-9 skid.