The Cardinals lead the division by a game after Pittsburgh lost. They're 6-1 on a nine-game homestand.
Kozma entered in the eighth inning as a pinch-runner, later stole third base and scored the tying run.
In the 10th, Kozma singled with two outs off Chase Ruffin (0-2). Oliver Perez walked Matt Carpenter and Jon Jay to load the bases.
Zunino couldn't handle the first pitch to Matt Holliday, with the ball rolling free and Kozma scoring on a head-first slide.
Rookie Kevin Siegrist (3-1) worked around two hits in the 10th for the win. He has not allowed a run in 19 1-3 innings.
Zunino homered for the Mariners, who have lost a franchise-record 13 games in extra innings, including their last six in a row.
The Cardinals have won their last four extra-inning games. Gold Glove catcher Yadier Molina helped them get there this time, throwing out pinch-runner Endy Chavez and Dustin Ackley when they tried to steal in the ninth.
Hisashi Iwakuma allowed three hits in seven scoreless innings for Seattle.
Adam Wainwright allowed a run in eight innings. The 16-game winner was hurt only by Zunino's 435-foot homer in the fifth.
Seattle second baseman Nick Franklin dropped pinch-hitter Brock Peterson's towering pop fly in the eighth for a two-base error that helped the Cardinals tie it. Kozma and stole third on Carpenter's full-count walk, then scored on Jay's grounder off Charlie Furbush.
The Cardinals struggled against Milwaukee pitching the previous series, with Wily Peralta and Marco Estrada both carrying no-hit bids into the sixth. St. Louis also struggled against Iwakuma, and one of the biggest cheers came when the final score was posted for the Pirates' 5-4 loss to the Cubs.
Zunino had been 4 for 30 in 10 games since coming off the 15-day disabled list from a broken left hand that sidelined him more than a month. He connected for his third homer of the season and first since July 22.
NOTES: Iwakuma topped 200 innings for the season in the fourth. ... It was 70 degrees at gametime, a 25-degree drop from two days earlier. ... 2B Carpenter hit his major league-leading 49th double in the third and made the defensive play of the game in the seventh with a sliding stab in the outfield grass and throw to rob Zunino of a hit. ... A pair of rookies get the call on Saturday night, with Michael Wacha (3-0, 2.72) making his seventh career start for the Cardinals and James Paxton (1-0, 1.50) making his second career start for Seattle. ... Former Cardinals 3B Ken Oberkfell threw the ceremonial first pitch. ... Kyle Seager started his 100th consecutive game at 3B, extending his Mariners' franchise record. ... Mariners radio rookie play-by-play man Aaron Goldsmith called a game in his hometown for the first time.