Kelly Shoppach's biggest hit with the New York Mets highlighted a four-run ninth that secured the team's sixth victory in seven games.

Shoppach hit a go-ahead two-run single with two outs in the ninth inning that cleared the bases when center fielder Justin Ruggiano misplayed the ball Saturday night, lifting the New York Mets to a 5-3 victory over the Miami Marlins.

"No matter where you are in this game, those are big moments, not only personally, but as far as the momentum going for us," said Shoppach, acquired from Boston on Aug. 14.

The Mets had been frustrated most of the night by Josh Johnson, who was on the verge of snapping a personal four-game losing streak. Johnson allowed a run and three hits in eight innings and held the Mets hitless until the fifth. He left leading 3-1.

New York rallied for four runs in the ninth against closer Steve Cishek (4-2).

Daniel Murphy and David Wright led off with singles to put runners on first and second. Cishek struck out Ike Davis before Lucas Duda singled home Murphy, with Wright reaching third.

Mike Baxter fouled out to shortstop Jose Reyes before Cishek walked Andres Torres, loading the bases. After Jason Bay entered to run for Duda, Shoppach singled to center.

How did Shoppach, a late-game defensive replacement, feel stepping to the plate?

"Panic, mostly — my first at-bat coming in in that situation," Shoppach said. "I don't think I've faced Cishek before. I had a bunch of pitches to see during Andres (Torres) at-bat."

Ruggiano let the ball get by him for an error while attempting to field it, allowing Torres to score and Shoppach to reach third. The three runs gave the Mets a 5-3 lead.

Mets manager Terry Collins praised Shoppach for hanging in against the side-arming Cishek.

"That was a big at-bat for him tonight. He's faced lefties all year and coming in to face a guy like that is really tough," Collins said.

Ramon Ramirez (3-3) pitched the eighth and Frank Francisco earned his 23rd save in 26 tries with a perfect ninth.

The Marlins scored a run in the eighth when Carlos Lee's one-out single scored Reyes from second.

Jeremy Hefner allowed two runs and six hits in six innings. He walked one and struck out four.

"He was down in the zone all night with all his pitches, and threw his breaking ball from behind in the count. I thought he pitched really well," Collins said.

Hefner liked what he saw in the ninth.

"It was awesome to fight back like that," he said. "Cishek's a good pitcher. That shows the fight in this team. It was fun to watch."

Miami went ahead 2-1 in the sixth when Giancarlo Stanton's infield single scored Reyes from third.

With one out, Reyes and Lee singled to put runners on first and third. Stanton then hit a grounder with much spin toward first.

Davis fielded the ball, looked toward the plate, then made a back-handed flip to second baseman Murphy, who was covering first. Murphy caught the ball but his foot fell way short of the first base bag. Stanton was credited with an RBI single.

Baxter doubled to left-center leading off the fifth for the Mets' first hit. Baxter took third on a groundout by Torres and scored when Josh Thole grounded out to short with the infield in.

Reyes made a nice play to field Thole's grounder on a hard hop, but had little chance to prevent Baxter from scoring.

Bryan Petersen's RBI double in the third gave Miami a 1-0 lead.

Donovan Solano led off with a single and reached second when John Buck grounded out to shortstop. After Johnson struck out, Petersen lined a double to left-center, where the ball tailed away from center fielder Torres.

Thole snapped an 0-for-30 skid when he open the eighth with a single. But pinch-runner Ronny Cedeno was erased on pinch-hitter Justin Turner's double-play grounder.

With Cedeno running on the pitch, Turner grounded to the second base bag where Solano fielded the ball, stepped on the base and threw to first.

NOTES: Shoppach is hitting .346 (9 for 26) with two homers and seven RBIs for the Mets. ... It was Cishek's fourth blown save. ... The series continues Sunday when Mets RHP Chris Young (3-7, 4.64 ERA) opposes Marlins LHP Mark Buehrle (12-11, 3.62). ... The Mets recalled C Mike Nickeas and 1B-3B Zach Lutz from Triple-A Buffalo before the game. . With the win, the Mets won a third straight series for the first time since Aug. 29-Sept. 7, 2011. . Baxter walked on three balls in the fifth inning Friday night. Baxter's at-bat should have continued with a 3-2 count. The mistake was not caught until after the inning.