When it counts the most, Jordany Valdespin is one tough Hombre.

The Mets' "El Hombre" had mostly remained inconspicuous since hitting a 10th-inning grand slam to beat the Dodgers last week, but Wednesday reappeared to torment a school of fish.

Valdespin delivered a pinch-hit, three-run homer in the sixth inning that put the Mets ahead, allowing them to snap a six-game losing streak with a 7-6 victory over the Marlins.

After two straight losses in the final inning, the Mets (11-15) showed fortitude late. LaTroy Hawkins and Scott Rice pitched a scoreless eighth before Bobby Parnell - upset a night earlier that he wasn't used in the ninth inning - earned his third save in five chances.

Rice recorded a pivotal out by retiring Juan Pierre with the tying run at third base and two outs in the eighth.

Dillon Gee (2-4) struggled, allowing four earned runs over five innings, but received new life when Valdespin cleared the right-field fence against A.J. Ramos in the sixth. The Mets had already scored a run in the inning to pull within 4-2 before Valdespin unloaded with the three-run blast for his sixth career pinch-hit homer. Valdespin hit five of those homers last year to establish a Mets' season record.

Scott Atchison allowed two unearned runs in the seventh that pulled the Marlins within 7-6, but the veteran righty retired the next two batters without the tying run scoring from third. Lucas Duda misplayed Justin Ruggiano's single to left, allowing two runs to score.

John Buck smashed a two-run double in the seventh that extended the Mets' lead to 7-4. It was Buck's third hit of the game and gave him 27 RBIs this season.