That changed in a hurry when the Marlins bullpen, which was handed a 3-0 lead and was four outs away from giving Johnson a much-deserved win, allowed the Reds to tie it at 3-3 in the bottom of the eighth.
"[Johnson] pitched his butt off tonight. He was amazing. We blew it for him," said Dunn, who took the loss.
"We wasted another great outing by J.J.," Marlins manager Edwin Rodriguez.
It was a disheartening loss for the Marlins, who were poised to win the game and the seventh of the nine series they have played this season, only to have it snatched away and watch the Reds celebrate.
Johnson's ERA dropped from 1.08 to 088 as he pitched seven scoreless innings, but his record remains 3-0.
"We got to win that game. We didn't find a way to do it. We need to win that game, though," Johnson said.
Johnson was not as efficient as he has been, needing 117 pitches to get through his seven innings, but he made the pitches when he needed them.
The Marlins took a 1-0 lead in the first when Chris Coghlan walked, stole second and came home on a base hit by Omar Infante, and added two more on a pinch-hit double by Wes Helms in the eighth after Reds reliever Aroldis Chapman had walked the bases loaded.
Reliever Edward Mujica gave up four straight hits in the eighth and was charged with all three runs the Reds scored in the inning.
Infante injured: Second baseman Omar Infante had to leave the game midway through the fifth inning with a right hamstring cramp. Infante had the only two hits for the Marlins at that point in the game.
Emilio Bonifacio moved from left to replace Infante at second, and Scott Cousins replaced Banifacio in left.
Coghlan in, for now: Coghlan was back in the lineup Saturday after missing Friday's game with a right shoulder strain, a persistent problem that the Marlins are monitoring closely.
"He is going to have to be very honest with us about the way he feels. If he is not able to go out there, we don't want him going out there with the risk of it getting worse," Rodriguez said.
With a 4:10 p.m. start Sunday, Rodriguez said he was not sure if Coghlan would be in the lineup. "It depends on how he feels," Rodriguez said. ...
Gregg Dobbs started at third base Saturday, as Rodriguez kept rotating players in that position.
Best April in team history: The Marlins had their best April in franchise history, and it all comes down to pitching.
"The [starting] rotation has been outstanding, the bullpen excellent. Every night they are keeping us in the game," manager Edwin Rodriguez said.