The win gives St. Louis (77-54) a half game lead ahead of Pittsburgh in the National League Central division.
Cincinnati pounced on St. Louis' starter Tyler Lyons getting a pair of two RBI triples from Zack Cozart and Todd Frazier.
Matt Holliday pulled the Cardinals within a run with a three-run home run that traveled 442 feet into Big Mac Land in the bottom of the third inning.
The Reds tacked on another run in the top of the sixth, but Craig struck one inning later.
David Freese led off the seventh with a single, and advanced to third on a pinch-hit double from Carlos Beltran. Matt Carpenter walked to load the bases, and Freese was able to score one batter later on Jon Jay's RBI ground out. After Holliday drew a walk to load them again, Craig came up with the go-ahead grand slam.
Carlos Martinez got his first career win pitching two innings of relief, and allowing one run.
Lyons left after five innings and giving up four runs -- one earned.