ST. PETERSBURG, Fla. -- This is the most productive month of Kelly Johnson's career, and Monday was the most productive day.
"Kelly drove the offensive engine today," manager Joe Maddon said.
The Rays nearly squandered an early six-run lead, and sent Miami to its sixth straight loss.
Johnson, who has 24 RBIs in 21 games this month, also doubled, singled and stole a base. He matched his career highs for RBIs and hits during his eighth multihomer game, and first since May 30, 2011, against the Marlins while with Arizona.
"I feel good and I feel confident," Johnson said. "You're always searching for something that's going to let you feel confident and you try to just roll with it. It could be daily, weekly. That's the way baseball is. I'm not going to sit here and try to figure it out."
Johnson homered off rookie Jose Fernandez (2-3) in a six-run second inning. He then broke open the game by hitting his 10th home run of the season in the eighth against A.J. Ramos.
The win made the Rays even with the Marlins at 43-43 in the all-time interleague series.
Jake Odorizzi, making his second start for the Rays, gave up eight hits and six runs and couldn't get through the fifth inning to qualify for the win.
"It's very frustrating not to be able to get through the fifth inning when the team gets you six runs," he said. "The offense was awesome today, the bullpen was phenomenal. Kelly did an awesome job today. It's just frustrating to know that I wasn't anywhere near my best stuff."
Jake McGee (2-2) got the victory after pitching two scoreless innings of relief.
The 20-year-old Fernandez, pitching across the bay from where he pitched in high school in Tampa two years ago, pitched 3 1-3 innings, giving up five hits, three walks and four earned runs while striking out six.
After fanning three Rays in the first inning, Fernandez walked the first two batters in the second, then hit Desmond Jennings with a pitch.
"I wasn't nervous. I was a little pumped up. I was trying to do a little too much, maybe," Fernandez said. "You're going to have rough games and you're going to have good days. So try to get it more good than bad."
The Marlins, who came into the game with a .221 team batting average, collected 10 hits in the first five innings, including Justin Ruggiano's eighth home run.
Greg Dobbs had two hits and drove in two runs for the Marlins, who had cut Tampa Bay's early six-run margin to one before Johnson hit his second homer.
"We never lost the lead. That was important to us," said Maddon, who has seen his starting pitchers and bullpen give away several big leads this season. "That's the one thing I always try to look at. Once you've lost the lead or even if it gets tied, that puts it back in their corner a little bit, so I thought Jake (McGee) was really important.
"We keep making this way more dramatic than it needs to be," he said.
- Tampa Bay LHP David Price (left triceps strain) resumed playing catch, making 35 throws before the game.
- Marlins manager Mike Redmond said OF Giancarlo Stanton (right hamstring strain) continues hitting and has incorporated light running into his rehab program.
- Miami 1B Logan Morrison (right knee inflammation) is joining Double-A Jacksonville after playing for Class A Jupiter. Marlins INF Donovan Solano (left intercostal strain) is scheduled to start batting practice Tuesday.
- Rays manager Joe Maddon dropped leadoff hitter Desmond Jennings to seventh to "get his plate discipline back."
- The Marlins put RHP Alex Sanabia (right groin) on the 15-day disabled list and recalled LHP Dan Jennings from Triple-A New Orleans.