ST. LOUIS - The night began ominously for Lance Lynn. The St. Louis Cardinals right-hander simply moved on, and re-discovered his shutdown stuff.

Lynn outdueled Noah Syndergaard, surrendering a leadoff homer to Curtis Granderson but virtually nothing after that, and the Cardinals got a go-ahead homer from Jhonny Peralta and held on for a 3-2 victory over the New York Mets on Friday night.

"He's one of those guys, you can call him a stopper," manager Mike Matheny said. "I want them all thinking that way. If we're in a rut, they have to go out and do something special. And that was special, keeping it there at one run."

Lynn was in command "except for the first batter" when he served up a 3-1 fastball to Granderson.

"I didn't love it and fixed it real quick," Lynn said. "So it was a good night."

Peralta, one of six St. Louis All-Stars, barely cleared the left-field fence on a two-out drive for his 14th homer. Kirk Nieuwenhuis made a leaping effort and his glove ticked the ball that landed in the Mets' bullpen.

Granderson's 14th homer was his fifth leadoff of the year for the Mets, who won four in a row before the All-Star break.

"We battled our tails off till the very last strike," Syndergaard said. "We all knew how important it was to come out for the second half on a good streak. We just came up a little short."

Trevor Rosenthal gave up Ruben Tejada's RBI infield hit in the ninth, and the Mets had two on before he struck out pinch-hitter John Mayberry Jr. on a changeup for his 27th save in 29 chances.

"I was trying to give him a different look," Rosenthal said. "I knew I had to make a good pitch with something else besides a fastball."

Rosenthal was unavailable in the All-Star game after experiencing fatigue in Pittsburgh in the Cardinals' final series prior to the break.

"I felt it would be smart to rest and give myself those extra days instead of throwing in the game," Rosenthal said. "Yeah, I feel good."

Lynn (7-5) allowed a run and three hits in seven innings in a game that began in 92-degree heat, retiring 16 of his final 18 batters. He had nine strikeouts with one walk for St. Louis, which leads the majors with a 57-33 record but had lost three straight before the break.

Syndergaard (4-5) also worked seven innings, allowing two runs and five hits. The rookie limited the Cardinals to two hits the first five innings, but gave up both runs on three hits in the sixth.

"Against that lineup and in these conditions, you can't be too mad about a performance like that," Syndergaard said.

Kolten Wong singled, stole second and advanced to third on a wild throw before scoring on Matt Carpenter's groundout to tie it. Peralta homered one out later.

Peter Bourjos added an RBI double in the eighth off Hansel Robles.

It was enough for Lynn. The Cardinals have totalled just 39 runs in 16 of Lynn's 17 starts, with an eight-run outburst at Cleveland on May 12 the exception.

Syndergaard had been 2-0 with a 1.22 ERA in his previous three starts, allowing one run each start, but fell to 0-4 on the road.

The Cardinals are a major league-best 32-11 at home and attendance of 44,540 was the 22nd sellout.

TRAINER'S ROOM

Mets: C Travis d'Arnaud (elbow) took batting practice, but manager Terry Collins said there's no timetable for his return.

Cardinals: LHP Jaime Garcia (groin) is scheduled for a side session Saturday and could rejoin the rotation in perhaps 10 days.

COLLINS TOSSED

Mets manager Terry Collins was ejected by plate umpire Chad Fairchild in the seventh for arguing a called strike with a 3-0 count against Lucas Duda, leading off the inning. He's been tossed three times.

"A ball's a ball, it's out of the zone," Collins said. "We hadn't said a word all game long. We're in a pennant race here. Those are big calls."

UP NEXT

John Lackey (7-5) has a 1.69 ERA in his last six starts, working seven or more innings in five of them. Bartolo Colon (9-7) has lost three straight decisions and the Mets have lost his last four starts.