Jose Martinez and Marcell Ozuna hit two-run homers, rookie Jack Flaherty pitched into the seventh inning, and the Cardinals beat the San Diego Padres 5-2 on Monday night.
Martinez has five homers over his last five games. He had his NL-leading 10th three-hit game of the season and has reached base safely in each of his last 11 games.
Jedd Gyorko added a one-out home run in the eighth.
The Cardinals have won 13 of their last 18 games against the Padres, who have dropped 46 of their last 62 games in St. Louis.
Flaherty (3-2) pitched 6 1/3 innings, his second-longest outing this season. He allowed one run and three hits with a walk and six strikeouts.
Flaherty retired 14 consecutive batters before issuing a one-walk in the seventh. John Brebbia relieved and walked the bases loaded before getting two strikeouts to end the threat.
Bud Norris earned his 13th save in 15 chances.
Jordan Lyles (2-3) gave up 11 hits and four runs in six innings.
St. Louis went ahead 2-1 in the third when Martinez homered into the right-field bleachers after Tommy Pham led off with a single.
After Martinez singled for his third hit in the fifth, Ozuna followed with a drive into the left-field bleachers on an 0-2 breaking pitch left over the plate, giving the Cardinals a 4-1 advantage. It was Ozuna's fourth homer in his last nine games.
Cory Spangeberg hit a line-drive homer into the right-field seats with one out in the second, giving San Diego a 1-0 lead.
The Padres added a run in the eighth when Travis Jankowski hit a ground-rule double, took third on a wild pitch and scored on a ground out.
Up next the Cards will send right-hander Miles Mikolas to the mound facing off with left-hander Matt Strahm.