But the game was decided by the bullpens. In that department, the Marlins had the edge -- barely. Cody Ross' two-run single off reliever J.J. Putz in the eighth inning rallied Florida to a 4-3 win over the Mets in front of 39,339 at Citi Field.
After falling on Monday night, the Marlins responded to take two of three in New York, improving to 4-2 on the year against the Mets.
"This shows the character of our team," Ross said. "We were going so well for a long time, and then were so bad for a while. To come in here to New York and take two of three from them shows that we're not just going to go out there and give up and let this thing snowball."
Prior to winning on successive days, Florida had been mired in a seven-game losing streak.
"We're fighting on every pitch, every single at-bat and every single out," Ross said. "I liked the way we went about that today."
Neither Johnson nor Santana was involved in the decision. Both were solid, yet vulnerable. The Marlins prevailed because Renyel Pinto, Leo Nunez and Matt Lindstrom each stranded runners on third base.
Ross delivered his timely hit off Putz, who put himself in a jam by walking Jorge Cantu and Jeremy Hermida to open the inning. Ronny Paulino's sacrifice bunt advanced both runners, and Ross ripped his single up the middle.
"I thought it was a well-pitched game by the first two guys, Santana and J.J.," Marlins manager Fredi Gonzalez said. "And we made some plays defensively behind J.J. and Cody Ross came up with a big two-run single to put us ahead. It was a good ballgame. We were able to sneak one out of there, really."
Locking down the ninth inning certainly wasn't easy for Lindstrom, who posted back-to-back saves for the first time this year. Still, he had to deal with the bases loaded and a bizarre delay.
Lindstrom issued successive walks to pinch-hitter Gary Sheffield and Carlos Beltran to open the inning. After striking out David Wright and getting Ryan Church on a groundout, Fernando Tatis was hit by a pitch.
The final out came when pinch-hitter Omir Santos lifted a soft fly ball to Alfredo Amezaga at shortstop.
Getting Santos into the batter's box, however, took a while. The backup catcher was called upon to pinch-hit for Ramon Castro. The problem was Santos wasn't in the dugout. He was warming up pitchers in the bullpen, and he had to go from there to the dugout, creating a delay of a few minutes.
During the awkward wait, home-plate umpire Scott Barry gave Lindstrom the option to throw a few warmup pitches.
"It was like they were icing Lindstrom a little bit," Cantu said. "I was concerned."
On his 21st offering of the day, Lindstrom induced a soft popup from Santos, giving the hard-throwing right-hander his fifth save in seven chances.
"I didn't know you could take five minutes in the ninth inning to find a hitter," Lindstrom said. "It is what it is, we're in New York. It's a tough place to play.
"I just didn't want to throw any warmup pitches after I got the second out. The umpire said I could throw some while I was waiting. I never really had to do that in the middle of an inning, wait for a hitter."
The three-hour, 11-minute game contrasted the two-hour, four-minute showdown between Johnson and Santana on April 12 at Dolphin Stadium. Florida won, 2-1, that day, with Johnson tossing a complete game.
Santana gave up two unearned runs and suffered the loss in Miami. On Wednesday, both of his runs allowed came in the first inning.
Cameron Maybin tripled -- for the first time in his MLB career -- with one out and scored on Wes Helms' sacrifice fly to center field. Cantu, who homered twice on Tuesday night, connected on a solo shot to left for his third blast of the series.
"I was looking for a changeup," Cantu said. "That's his bread-and-butter. Pretty much the whole game, I was sitting on that. I wasn't even looking to swing at a fastball. I got away with it and gave us a lead in the first inning."
It was a struggle for six innings for Johnson, who dealt with runners on base every frame. The 25-year-old right-hander issued nine hits, walked one and struck out three. In his complete-game gem on April 12, Johnson struck out eight and allowed one run on five hits.
"We had to battle, and we ended up coming out on top," Johnson said. "The offense picked me up. The defense was there. It was a team win.
"It was one of those days where nothing felt good, nothing felt like it was working."
The Mets claimed a 3-2 lead in the sixth inning on a disputed home run from Tatis off Johnson.
The drive to left just cleared the high wall, and a fan reached down trying to catch it. Unclear if it was indeed gone, Gonzalez asked if the umpires to discuss among themselves. After a replay, the call on the field of a home run was upheld.
"J.J. was real solid, and he gave you six solid innings against one of the best pitchers in baseball," Gonzalez said.
Joe Frisaro is a reporter for MLB.com. This story was not subject to the approval of Major League Baseball or its clubs.