NEW YORK -- Someday, maybe when he turns 50 or 60 or even 70, Bartolo Colon might get knocked off the mound.
In the meantime, he's in total control.
"Just throwing it straight. It was going where I wanted it," the 43-year-old Colon said through a translator.
Gyorko homered in both ends and has connected seven times in nine games. His two-run shot helped St. Louis win the opener 3-2.
"Anytime you can win the first one, you hope to win the second one," Gyorko said. "I think the way we pitched today, we probably should've won two. But obviously any day that you win a game, it's a good day."
Behind Colon, the Mets threw the ball well, too.
Colon (9-5) struck out eight and walked none, throwing 65 of his 87 pitches for strikes. After Gyorko homered in the second and Alberto Rosario doubled in the third, Colon set down 14 of his final 15 batters.
On a staff full of young talent, Colon is doing so well that the Mets plan to bring him back on three days' rest to start Saturday night against Colorado.
"He's pitching as good, if not better, than anybody," manager Terry Collins said.
Asdrubal Cabrera ended his 0-for-32 rut with runners in scoring position with an RBI double and added a sacrifice fly off Jaime Garcia (7-7). Wilmer Flores doubled and singled twice, and Collins helped by winning his third replay challenge of the day.
The Mets have alternated wins and losses for the last 12 games. They returned to Citi Field for the first time since the All-Star break, facing their fellow NL wild-card contenders.
A rainout Monday forced the first doubleheader between the Mets and Cardinals since 1999.
Gyorko hit his 14th homer for an early edge in the nightcap. The Cardinals lead the NL with 138 home runs, one more than last year's total.
St. Louis has homered in 17 straight games, its best streak since a team-record string of 19 games in 2006.
Cabrera tied it with a double in the third. He smiled as he pulled into second base after breaking his long drought.
"He took a lot of ribbing when he got back into the dugout," Collins said. "You can't help but think about it because it's brought to your attention a lot."
The Mets took a 2-1 lead in the fourth on a double by Flores, a dropped flyball by right fielder Randal Grichuk and a double-play grounder.
Juan Lagares beat out an infield hit in the fifth, with Collins winning a challenge, and that set up Cabrera's sacrifice fly.
In the opener, Gyorko homered off Noah Syndergaard (9-5) for a 3-0 lead in the third.
Mets 3B Jose Reyes went to the hospital with a strain in his side after getting hurt on a swing in his last at-bat of the opener. Collins said Reyes will be out "a couple of days."
The Cardinals recalled RHP Sam Tuivailala as the 26th player for the second game. He pitched a scoreless inning.
The Mets brought up 27-year-old lefty Josh Smoker -- he's made 43 relief appearances for Triple-A Las Vegas, and had never been in the majors. He didn't get into the game, but said the all-day trip from Fresno, California, to Phoenix to New York was worth it.
Smoker got his first look at Citi Field, arriving around the sixth inning of the second game and hurrying to get ready. "I was dressing as I was going to the bullpen. I didn't want to miss a minute. Got to shake hands at the end of the game. Honestly, it hasn't sunk in yet," he said.
Smoker said he hadn't heard what the Mets planned for him in the next day or so.
Cardinals: RHP Adam Wainwright (9-5, 4.09) is 3-0 with a 0.93 ERA in four July starts.
Mets: RHP Logan Verrett (3-6, 4.14) starts Wednesday night vs. St. Louis. No one on the Cardinals' active roster has batted against him.