Lance Lynn pitched seven innings of three-hit ball, and Tommy Pham, Paul DeJong and Luke Voit homered as the St. Louis Cardinals beat the Mets 6-0.
It was Lynn's longest outing since May 23, when he threw 123 pitches in eight scoreless innings in a 2-1 loss to Clayton Kershaw and the Dodgers.
Lynn (7-6) had a season-low two strikeouts, but he needed just 93 pitches while facing two batters over the minimum. He did not allow a runner past first and lowered his ERA to 3.61.
Trevor Rosenthal struck out the side in the eighth and John Brebbia pitched a scoreless ninth as the Cardinals finished a 6-4 homestand and moved into a tie with the Chicago Cubs for second place in the National League Central.
Steven Matz (2-2) gave up five runs and seven hits in 4 1/3 innings, his shortest outing since June 3. He struck out a season-low one.
DeJong finished 2 for 4 and is 10 for his last 13 and is the first rookie and first Cardinals player in the modern era to have seven extra base hits in a three-game series.
Pham drove a 3-1 pitch from Matz the other way over the right-field wall to give the Cardinals a 3-0 lead in the third. It was Pham's 11th homer of the season and first in six games.
DeJong's homer, his third in three games, made it 4-0 in the fourth. Voit greeted Seth Lugo with an opposite field homer, his third in his last seven games, to right to make it 5-0.
Carpenter led off the first with a double and scored to give the Cardinals a 1-0 lead. It was the first time in six games that the Cardinals scored in the opening inning and it broke Matz's 17-inning scoreless streak, the second-longest of his career.
Pham left the game with right hip tightness after the sixth inning. He was 3 for 3 with two runs scored.
Mike Leake (6-7, 3.12) will start at Pittsburgh as the team begins a 10-game road trip after the All-Star break. He is 10-5 with a 3.33 ERA in 30 career starts against the Pirates.