Cabrera, who struck out three times, connected on a 3-2 pitch from Rodriguez (2-3) into the right-field stands to give the Padres their 11th win over New York in 14 games.
The Padres tied the game in the ninth at 2-all after Kyle Blanks led off with a walk and scored on fellow rookie Will Venable's double into the right-field corner off Rodriguez.
Blanks was ruled safe by umpire Marvin Hudson on the throw to the plate, although TV replays seemed to indicate that catcher Brian Schneider took the relay from second baseman Anderson Hernandez and tagged Blanks' hand before he touched home.
Rodriguez, who has five blown saves, walked Henry Blanco and intentionally walked pinch-hitter Oscar Salazar to load the bases. The Mets then moved center fielder Angel Pagan to become a fifth infielder playing near second base, with the entire infield playing in, before Cabrera connected.
Heath Bell (4-1) pitched the ninth for the win.
San Diego's comeback ruined the best start of the season for Oliver Perez, who carried a shutout into the seventh inning. The Mets have lost seven of nine.
The left-hander dominated San Diego through six innings, facing just one batter over the limit. Perez struck out seven and did not walk a batter as the Padres managed just two baserunners. Blanco reached on a one-out double and David Eckstein was hit by a pitch leading off the fourth.
But Perez started the seventh with consecutive walks to Eckstein and Adrian Gonzalez. After a flyout, Chase Headley doubled off the center-field wall to cut the lead to 2-1 and knock Perez from the game.
Reliever Brian Stokes then struck out Blanks and intentionally walked Venable to load the bases. Blanco then topped a ball that traveled about 2 feet in the dirt in front of home plate. Schneider grabbed the ball and easily made the force out at home.
Perez finished allowing one run and two hits in his longest outing of the season.
San Diego threatened again in the eighth inning when it loaded the bases, but Stokes got Headley to ground out to end the threat.
Pagan led off the game with a single and was called out by umpire Randy Marsh as he tried to steal second. But Marsh changed the call when Cabrera dropped the ball as he made the tag, and was charged with an error.
David Wright, who had three hits, drove in the first run with a one-out single. Wright went to third on a two-out single by Jeff Francoeur and scored on a wild pitch by Kevin Correia.
Correia gave up two runs - both unearned - and seven hits in his six innings.
NOTES: Hernandez made his Mets season debut as a defensive replacement in the eighth inning, then walked in the ninth. Anderson was acquired in a trade with Washington on Thursday. ... Perez began his career in the Padres organization, where he pitched in the majors for two seasons. ... The wife of Mets' RHP Mike Pelfrey had the couple's first child on Friday. Pelfrey, who was scheduled to start on Saturday night, will rejoin the team Monday in Arizona for his next start. ... The Padres honored Hall of Famer Rickey Henderson in a pregame ceremony. Henderson set major league records for runs scored and walks during his three seasons (1996-97, 2001), and also collected his 3,000th career hit.
© 2009 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed. Learn more about our Privacy Policy.