ST. LOUIS (AP) -- Felipe Lopez's fifth career grand slam showcased his flair for dramatics. It also rewarded another stingy effort from St. Louis Cardinals' starting pitching.
With the bases loaded, Lopez is a .368 hitter with 93 RBIs in 94 at-bats. On Friday night, he erased a one-run deficit to back Chris Carpenter's sterling bounceback outing as the Cardinals rallied against the New York Mets bullpen before holding on for a 4-3 victory.
"I put a good swing on it and it went further than I thought," Lopez said. "I don't try to hit home runs with the bases loaded, I just try to do my job and get it out in the outfield."
The Mets led 1-0 on the strength of an unearned run and stingy work from Oliver Perez before Lopez connected against 32-year-old rookie Raul Valdes. The first homer of the season by Lopez, a utility player St. Louis, came on a 2-1 pitch.
Lopez started at second and played the ninth at shortstop, throwing out Jose Reyes and Luis Castillo on tough plays for the final two outs.
"He had a great game," manager Tony La Russa said. "He's not in an ideal situation but he does have the benefit of versatile talents and his attitude is right."
Carpenter (2-0) struck out 10 in seven innings and allowed an unearned run on four hits, making a strong rebound from a poor outing Sunday in Milwaukee in which he allowed three homers and seven runs -- five earned -- in five innings at Milwaukee. Earlier in the week the Cardinals' ace dismissed speculation about potential reasons for getting knocked around, saying he simply got the ball up and paid for it.
"Tonight I executed," Carpenter said. "When I missed, I missed down."
Carpenter fanned Gary Matthews Jr. three times and reached double digits in strikeouts for the 13th time, and first since Sept. 7 at Milwaukee. He's 2-4 with a 3.89 ERA in six career starts against the Mets and beat them for the first time since Sept. 8, 2005, in St. Louis.
Cardinals starters have allowed two earned runs the first four games of the opening six-game homestand.
Perez allowed a run and four hits in 6 1-3 innings before the handing it off to the bullpen, which entered with a 1.95 ERA that was second-best in the majors. The Mets have lost five of six.
"It's frustrating, there's no doubt about it," manager Jerry Manuel said. "You have to applaud the fact we have at least in these first 10 games given ourselves a shot to win."
Fernando Nieve (0-1) got ahead 0-2 in the count against pinch-hitters Skip Schumaker and Matt Holliday, who didn't start due to illness, and both reached to load the bases with one out in the seventh. Schumaker was hit on the foot on an 0-2 pitch and Holliday walked on four straight balls after taking the first two strikes, setting up Lopez's heroics.
"I was trying to pitch around them and I think that was a mistake," Nieve said. "We just couldn't hold the game, and I hope next time I do better."
Manuel said he would have preferred to use Pedro Feliciano, who was unavailable because of stomach issues, instead of Valdes.
Mets pinch-hitter Fernando Tatis lined out to third on a diving play by David Freese to end the eighth, stranding runners on second and third. Ryan Franklin allowed two runs on three hits in the ninth with RBIs by pinch-hitter Frank Catalanotto and Reyes, before getting his fourth save in four chances.
Jeff Francoeur was 2 for 3 with a walk and has hit safely in the first 10 games, four shy of the Mets' record set by David Wright last season and tied with three other players. Francoeur is batting .457 (16 for 35)
Shortstop Brendan Ryan's throwing error on a botched rundown in which first baseman Albert Pujols also was at fault gave the Mets an unearned run and the lead in the second.
Francoeur was hung up between third and home after taking a wide turn following Perez's sacrifice bunt, but Pujols threw to third instead of home. Ryan, who was covering the bag, uncorked a wild throw to the plate.
For breaking news alerts, text KMOVNEWS to 21321
Have you seen the forecast for tomorrow?
Get the latest St. Louis weather forecast