Cincinnati's surge has moved it back into first place in the NL Central. The Reds have matched their season high at 11 games over .500.
Ludwick, a former Cardinal, got two strikes to start his at-bat against Victor Marte (2-2), fouled off three pitches, then worked the count full. He connected for his 13th homer, flinging his helmet away before jumping into the pile of teammates at home.
Ludwick's drive barely cleared the wall in left but it was good enough to make a winner out of Sam LeCure (3-2), who pitched a perfect 10th inning.
Yadier Molina homered for St. Louis, which stranded 11 runners and left the bases full in the eighth.
Molina started the seventh inning with a drive to left against Mike Leake, making it 67 straight games at Great American Ball Park with at least one homer. It's the longest such streak since Coors Field had 80 consecutive games with a homer in 2002-03.
Molina was booed loudly as he rounded the bases, the same treatment he's gotten in each at-bat since his fight with second baseman Brandon Phillips in 2010.
The Cardinals tied it at 2 later in the seventh on Rafael Furcal's squeeze bunt - first baseman Joey Votto failed to come up with the ball for a play at the plate.
It came down to the bullpens, and Cincinnati's did the better job escaping threats. Left-hander Bill Bray got pinch-hitter Tyler Greene to foul out with the bases loaded in the eighth, keeping it tied at 2.
Left-hander Aroldis Chapman struck out three in the ninth, throwing 14 pitches - all fastballs between 98 and 102 mph.
St. Louis activated Lance Berkman before the game and optioned outfielder Shane Robinson to Triple-A. Berkman missed 47 games after tearing cartilage in his right knee while stretching for a throw at first base on May 19.
Berkman didn't start on Saturday. He got a hug from pitcher Adam Wainwright when the videoboard showed the two of them in the dugout during a KissCam segment. Berkman pinch hit in the seventh and struck out swinging.
Jay Bruce led off the fourth with a double but was stranded as the Reds wasted their best chance against Kyle Lohse, who gave up two runs in six innings. They loaded the bases with two outs, but Zack Cozart flied out. The Reds are batting only .235 with runners in scoring position, including .230 with the bases loaded.
Phillips singled with two outs in the fifth and scored on a hit-and-run double by Bruce into the right-field corner. Cozart's sacrifice fly made it 2-0 in the sixth.
St. Louis outfielder Matt Holliday extended his hitting streak to a season-high 13 games with a single in the sixth.
Link to boxscore: Cincinnati 3, St. Louis 2 (10 innings)