The hard-throwing right-hander twice worked out of jams to earn his second straight win and help Miami win an interleague series with Cleveland by beating the Indians 5-3 Sunday.
"It means a lot to have him back," said third baseman Greg Dobbs after getting three hits and a key RBI.
A year ago, an inflamed right shoulder limited Johnson to nine starts. He went 3-1 with a 1.64 ERA, but didn't pitch after May 16.
"J.J. will be completely back," Dobbs forecast. "It's not a matter of if it happens, but when. He will flat-out dominate again. He's a horse. And when he gets there -- watch out."
Johnson (2-3) allowed one run and five hits over seven innings as Miami improved to 14-5 in May, the best record in the majors this month.
"He just threw strikes," Marlins manager Ozzie Guillen said. "I saw a couple of 95s on the (radar) gun. The big thing is his confidence is back."
"Both teams pitched pretty well," Indians manager Manny Acta said. "It was about pitching the whole series. It's not like either one of us has the Texas Rangers lineup. It was a well-played series. Unfortunately, we ended up losing two out of three."
Cleveland starter Derek Lowe (6-2) allowed two runs over six innings and had his four-game winning streak broken.
"I've seen Johnson pitch many good games," said Lowe, who spent the last seven years facing the Marlins in the NL. "Today was no exception. He made quality pitches when he had to."
Clinging to a 2-1 lead, Johnson twice got the Indians to hit key ground balls with two runners on. After an RBI single by Lopez got Cleveland within a run in the fifth, the right-hander got Shin-Soo Choo to ground to the right side, forcing out Lou Marson at second. Shortstop Jose Reyes could not throw to first for a double-play attempt as Marson stood in his way. The umpires ruled interference and called Choo out, too.
With runners on first and third in the seventh, Johnson got pinch-hitter Kotchman on a grounder to end the threat.
"It was a changeup," Johnson said. "It wasn't the best pitch, but it got the job done. The change was my best pitch today."
Johnson wasn't impressed that it was his 50th career win.
"Nice I guess, but it's a team win and that's what counts," he said. "We've got a lot of characteristics on this team we haven't had. Guys who will get down, get dirty, and try to win. I love that."
After scoring only three runs in the first two games at Progressive Field, Guillen made sure Miami put some pressure on Lowe. Reyes doubled to open the game and Guillen had Bryan Petersen bunt him over to third. Reyes then scored on a groundout by Hanley Ramirez.
Miami made it 2-0 in the third. Ramirez got a two-out single and hustled around to score on Dobbs' double.
Michael Brantley broke a 0-for-13 slump with a bloop single and stole second to fuel Cleveland's fifth-inning rally.
Johnson has given up two runs over seven innings in three straight starts, going 2-0. That has the Marlins brimming with optimism.
"When he's right, you just have that feeling," Dobbs said. "It's like, `J.J. is out there -- we're winning today.' "
The 38-year-old Lowe was coming off a 127-pitch shutout of Minnesota on Tuesday, when he gave up six hits and four walks without a strikeout.
Cleveland scored seven runs in the series after totaling 25 in a four-game winning streak. ... Miami put OF Emilio Bonifacio on the 15-day disabled list with a sprained left thumb. The Marlins also recalled Coghlan and selected the contract of INF Donovan Solano from Triple-A New Orleans. ... INF Omar Infante was in Miami's lineup, but scratched when he went to Venezuela because of a death in the family. Donnie Murphy replaced him at second base. ... Miami 1B Gaby Sanchez, an NL All-Star last year, was optioned to New Orleans after Saturday's game. ... Cleveland RHP Chris Perez reiterated disappointment in Cleveland fans for not packing the ballpark and booing him when they do attend. He had blasted them Saturday after notching his 13th straight save and said before Sunday's game: "It's just a slap in the face when you're in first place and last in attendance. Last. Not 25th or 26th. Last." ... Miami is 8-4 vs. Cleveland in interleague play since beating the Indians in 11 innings in Game 7 of the 1997 World Series.