Juan Yepez followed with a single before Snell struck out Paul DeJong to tie his career-high of 13.
Josh Hader pitched a perfect ninth for his 34th save.
The Padres took a 1-0 lead when Austin Nola singled in Kim Ha-seong with two outs in the second against Miles Mikolas. Josh Bell was thrown out earlier in the inning trying to score on a grounder to shortstop.
Mikolas (11-13) allowed an unearned run on three hits in six innings, struck out six and walked two.
San Diego's Juan Soto walked leading off the eighth, becoming the first player since 1906 to walk 500 times before turning 24.
Cardinals RHP Jack Flaherty (0-1, 5.09 ERA) and Padres RHP Joe Musgrove (10-7, 3.16) are scheduled to start in the series finale Thursday afternoon.
More AP MLB: https://apnews.com/MLB and https://twitter.com/AP_Sports