Matt Holliday also had a long three-run homer as St. Louis moved into sole possession of first place in the NL Central for the first time since July 29. The Cardinals led idle Pittsburgh by a half-game and Cincinnati by 3 games top heavy division.
Rookie Carlos Martinez (1-1) pitched two innings for his first major league win and Edward Mujica worked a perfect ninth for his 35th save.
Zack Cozart had two hits and three RBIs for the Reds, who dropped to 4-9 against St. Louis this season. Jay Bruce hit his 25th homer in the eighth.
Cozart and Todd Frazier each hit a two-run triple off Tyler Lyons in the second, helping Cincinnati to a 4-0 lead. But Holliday belted a three-run drive deep to left in the third.
Holliday’s 18th homer came against Mike Leake and traveled an estimated 443 feet for the longest shot by a St. Louis player to Busch Stadium this season.
The Cardinals went ahead to stay in the seventh. Jon Jay has resulted in a run on a bases-loaded grounder off Manny Parra (1-3). J.J. Hoover then came in and walked Holliday to full-count pitch and Craig led the next pitch over the wall in right for his 13th homer.
The crowd of 35,159 roared as Craig rounded base. The big first baseman then came out for a curtain call.
Bruce connected against Seth Maness, but that was it for Cincinnati, which lost for the third time in four games.
Lyons settled down after a rough start and charged with one earned run in five innings. He struck out seven and walked two.
Leake allowed Operates five and seven hits in 1 to 3 June innings. The right-hander is 1-1 with a 5.20 ERA unfortunate in his last six starts.