Lance Lynn (15-7) pitched six innings of five-hit ball to earn his first win since July 27 for the Cardinals, striking out seven in the All-Star's return to the rotation after a bullpen demotion.
Skip Schumaker had an early run-scoring single for St. Louis.
Adrian Gonzalez had an RBI double in the Dodgers' seventh loss in eight games.
St. Louis and Los Angeles had lost three straight and six of seven coming in.
Paco Rodriguez (0-1) and Ronald Belisario allowed the seventh-inning rally capped by Craig's RBI single.
ASTROS 6, PHILLIES 4
HOUSTON (AP) — Pinch-hitter Jed Lowrie delivered a two-run double in the eighth inning and the Astros stung Philadelphia, rallying for a 6-4 victory that ended the Phillies' seven-game winning streak.
The Phillies' surge had pushed them within three games of St. Louis for the second NL wild-card spot.
Philadelphia couldn't hold an early 4-0 lead, and Lowrie's two-out put the Astros ahead 5-4.
Matt Dominguez hit a three-run homer for Houston, which has the worst record in the majors.
Phillippe Aumont (0-1) took over in the eighth with a 4-3 lead.
Wesley Wright (1-2) got the last two outs of the eighth for the win.