Craig hit his first career grand slam, helping the Cardinals rally for an 8-6 win over the Cincinnati Reds.
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 lead idle Pittsburgh by a half-game and Cincinnati by 3 1/2 games in the top-heavy division.
Craig is 7 for 10 with 20 RBIs this season with the bases full.
"I think I've developed a pretty good approach that allows me to be successful in that position," Craig said. "I go up there confident and I believe in myself."
Holliday's 18th homer came against Mike Leake and traveled an estimated 442 feet for the longest shot by a St. Louis player at Busch Stadium this season.
"What it comes down to is that guys are just swinging the bats," St. Louis manager Mike Matheny said.
The Cardinals went ahead to stay in the seventh. Jon Jay drove in a run with a bases-loaded grounder off Manny Parra (1-3). J.J. Hoover then came in and walked Holliday on a full-count pitch and Craig drove the next pitch over the wall in right for his 13th homer.
"I left it a little too much out over the plate," said Hoover, who has allowed three grand slams this season. "I knew he's a good hitter with the bases loaded and I didn't want to come in there on the first pitch."
Cincinnati manager Dusty Baker said Craig's drive was "devastating."
"They have a lot of dangerous hitters, but we helped them out with a couple walks," he added.
Craig improved to 14 for 31 (.452) in his career with the bases loaded. He is batting an eye-popping .452 with runners in scoring position this year, a big reason why he leads St. Louis with 95 RBIs.
"No bigger or better at bat all season," Matheny said. "He's been so good in that situation."
The crowd of 35,159 roared as Craig rounded the bases. The big first baseman then came out for a curtain call.
"I wasn't thinking about hitting a home run, I just wanted to hit it hard and in play," Craig said. "When guys are on, I just try and hit it hard somewhere and it usually works out."
Craig's drive helped the Cardinals rally from a four-run deficit, tying their largest comeback of the season. They also came from four down to beat Pittsburgh 6-5 in 12 innings on Aug. 15.
Bruce connected against Seth Maness, but that was it for Cincinnati, which lost for the third time in four games.
"We're getting down to crunch time and every series is important," Hoover said. "When you look back at the end of the season, one loss could be important."
Lyons settled down after the rough start and was charged with one earned run in five innings. He struck out a career-high seven and walked two.
"The second inning didn't go how I wanted it to," Lyons said. "It was just about bouncing back and trying to keep the team in the game for as long as possible. I think I did that."
Leake allowed five runs and seven hits in 6 1/3 innings. The right-hander is 1-1 with an unseemly 5.20 ERA in his last six starts.
Joe Kelly (5-3, 3.01 ERA) will face Cincinnati's Mat Latos (13-4, 2.93 ERA) in the second game of the three-game series on Tuesday. Latos is 5-1 with a 1.47 ERA in seven starts since the All-Star break. ... The Cardinals are 24-3-2 in home series against Cincinnati since the start of the 2003 season. .... Holliday has driven in a run in his last six games.
MLB deadline madness takeaways - From blockbuster trades to Mets' Kumar Rocker mess
Head still spinning from a wild run of baseball transactions? Jeff Passan breaks down five key lessons.
Widener scheduled to start as Arizona hosts San Francisco
San Francisco Giants (66-39, first in the NL West) vs. Arizona Diamondbacks (33-73, fifth in the NL West)
Lopez, Orioles to face Heaney, Yankees
Baltimore Orioles (37-67, fifth in the AL East) vs. New York Yankees (56-48, third in the AL East)
Wilson, Pirates to face Lauer, Brewers
Pittsburgh Pirates (40-65, fifth in the NL Central) vs. Milwaukee Brewers (63-43, first in the NL Central)
Gray expected to start for the Nationals against the Phillies
Philadelphia Phillies (52-53, second in the NL East) vs. Washington Nationals (49-56, fourth in the NL East)
New York Mets to visit the Miami Marlins
New York Mets (55-49, first in the NL East) vs. Miami Marlins (44-61, fifth in the NL East)