Yadier Molina hit two home runs and the NL Central-leading Cardinals matched a season high with their sixth straight win Tuesday night, weathering a weird delay to beat the Milwaukee Brewers 6-3.
St. Louis right fielder Dexter Fowler preserved the win by jumping at the wall to catch a drive by Perez with two on for the final out.
Miles Mikolas (8-13) struck out 10 for the Cardinals, who have won 15 of 18 and are a season-best 15 games above .500. They held their three-game lead over Chicago in the division while the Brewers dropped 6 1/2 back.
Molina also doubled in going 3 for 3 with a walk, driving in three runs and scoring three. He has seven homers this season, including three in the first two games of the series.
The Brewers cut the lead to 4-3 in the eighth on Yasmani Grandal's two-run homer to deep left-center off Andrew Miller. The Cardinals answered with two runs in the ninth on run-scoring singles by Harrison Bader and Kolton Wong.
Carlos Martinez got five outs to record his 16th save in 19 chances, with help from Fowler.
Jack Flaherty (8-6, 3.32 ERA) takes the mound in the three-game series finale Wednesday afternoon. Flaherty is 2-2 with a 4.79 ERA in eight career starts against the Brewers.
Jordan Lyles (8-8, 4.69) will make his sixth start with Milwaukee after being acquired from the Pirates last month. He tossed six hitless innings in his last start on Friday against Arizona.