The Florida Marlins ace gave up nine hits in six innings Wednesday night, but that was enough to keep him undefeated against the Mets, who lost 5-3.
Johnson trailed early but improved to 7-0 against New York with an ERA of 2.30 in nine career starts.
"I was a little inconsistent, but we got the W," he said. "My slider is not there right now at times. My changeup comes and goes. It's just one of those things during the season that you've got to get through."
It was hardly the matchup the injury-plagued Mets needed. They lost their fifth game in a row, and their disabled list grew to 13 players when pitcher Oliver Perez was sidelined with a season-ending knee injury.
Johnson (13-3) allowed three runs and retired the side in order only once. But he climbed 10 games above .500 for a team that's eight over.
"Any time he goes out there, we have so much confidence in him, we expect him to shut them out and not give up any hits," teammate Cody Ross said. "He battled through some tough innings."
Three relievers combined for three scoreless innings, with Leo Nunez pitching the ninth for his 16th save in 20 chances.
Ronny Paulino hit a two-run homer and Ross had a two-run triple for the Marlins, who have the highest batting average in the majors in August.
"That's what's nice about this team right now -- everyone is doing their part," Ross said. "It wasn't like that the first few months of the season."
While the Mets can't beat Johnson, Mike Pelfrey can't beat the Marlins. Pelfrey (9-9) fell to 1-6 in 10 starts against Florida, with six losses in a row.
"Maybe they like fastballs," he said. "I like to throw fastballs. Tonight they were patient at the plate. They made me throw it over the middle, and they hit me hard."
The right-hander gave up 11 hits, five walks and five runs in 5 2/3 innings. He threw a season-high 118 pitches, including 71 in the first three innings.
Florida won despite stranding 11 and going 1-for-7 with runners in scoring position.
New York's Fernando Tatis had three hits and improved his lifetime average against Johnson to .667 (8-for-12).
But New York managed only one more run -- in the sixth on Sullivan's sacrifice fly. Johnson finished with seven strikeouts and no walks.
"He made some pitches when he had to," Florida manager Fredi Gonzalez said. "No walks -- that's what saved him. To give up three runs and probably not be 100 percent, for me that's a good start."
Florida tied the game in the third on Ross' two-out, two-run triple. Jeremy Hermida reached on a two-out infield single in the fifth, and Paulino followed with his seventh homer to put the Marlins ahead 4-2.
Before the game, Florida recalled outfielder Brett Carroll from Triple-A New Orleans. ... Mets left fielder Gary Sheffield (back) sat out. ... The Marlins enjoyed some pregame hijinx, with Ramirez pulling up president David Samson's trousers from behind as team the prepared to pose for its annual group photo before the game. ... Mets right-hander Tim Redding, who will pitch the final game of the series Thursday, is 1-5 with an ERA of 8.73 in seven starts against Florida since the beginning of 2007. ... Boxers Randall Bailey and Juan Urango threw out the ceremonial first pitch. They'll fight for Urango's junior welterweight title Friday.