"JJ, he started the game very slow, but he turned the thing around and pitched a little bit better," manager Ozzie Guillen said. "It seemed like as the game went on he started to get better. But all of a sudden, he got 115 pitches early in the game."
Paul Maholm threw 6 2/3 innings of shutout baseball, and the Braves extended the Marlins' losing streak to six.
The ninth inning summed up Miami's frustration. Craig Kimbrel locked down his 40th save. But the way he did it was impressive, as he struck out four straight batters. The second one was Donovan Solano, who reached first on a strike-three wild pitch.
Kimbrel then fanned John Buck and Gil Velazquez to end it.
"He's amazing," Guillen said of the Atlanta closer. "Every time that kid is on the mound, I guarantee you everyone around the organization feels pretty good about it because they know the guy is one of the best ones on the mound right now, if not the best one on the mound.
"I think the reason they are where they are right now is because of his closing. He's having a great year for them, and he didn't do anything different today."
It wasn't a totally clean outing for Johnson (8-14), who lost his third straight start. The right-hander walked five, with one intentional. But again, he wasn't backed with much offense.
Entering the game, Miami was averaging 2.1 runs of support when Johnson was on the hill. That figure will go down after the Marlins were shut out for the 17th time.
The Marlins continue to play shorthanded, as Giancarlo Stanton (left intercostal muscle strain) once again was out of the lineup. And Justin Ruggiano (right shoulder) is out for the season.
A makeshift lineup, however, isn't being used as an excuse by Johnson.
"That's part of it," the veteran right-hander said. "You've got to do whatever you can to get outs, and get wins."
Maholm limited the Marlins to five hits and struck out six, without allowing a walk.
The Braves, who clinched a playoff spot on Tuesday, are seeing if they can make a run at the first-place Nationals for the National League East title.
"It's going to be difficult," Atlanta manager Fredi Gonzalez said of catching Washington. "But it can be done. We'll have to see what happens."
In defeat, Solano extended his hitting streak to six games with a single in the second.
Prado has been a steady performer all season against the Marlins. And he continued again on Wednesday, becoming a factor two batters into the game. On a 2-2 pitch, the Braves left fielder connected on a home run, his 10th of the season.
"It was a pretty good pitch, from what I hear," Johnson said. "Good hitter. He's a good hitter. I don't see how his numbers aren't even better than they are. It seems like every time I see him, even when he's not playing us, he's hitting the ball all over the field."
Johnson avoided deeper trouble in the first after he issued successive one-out walks to Jason Heyward and Chipper Jones. Atlanta was unable to capitalize.
But in the third inning, Prado again hurt Johnson. Jose Constanza led off with a walk and stole second. Prado padded the lead to two runs with an RBI single.
An error and some aggressive baserunning resulted in the Braves scoring their third run. In the sixth inning, Dan Uggla reached on third baseman Velazquez's throwing error. Velazquez actually made a nice diving stop to the shortstop side. He spun and threw to first, but the ball hopped and wasn't handled by Carlos Lee.
Uggla moved to third on Brian McCann's single to right. With runners on the corners, Johnson induced Andrelton Simmons to tap softly to third for an out. McCann moved to second.
With Maholm at the plate, Atlanta attempted a suicide squeeze. Uggla and McCann were running on the pitch, which was high. Maholm offered at the pitch over his head, and missed it. But the ball deflected off catcher Buck's mitt and went to the backstop.
The Braves were credited with a double steal, with Uggla swiping home. The last time an Atlanta player stole home came on July 28, 2010. Heyward swiped the plate that day, also as part of a double steal.
"The only offense we had really was Prado," Gonzalez said. "We snuck one in with the steal of home."