ST. PETERSBURG, Fla. -- With James Shields pitching a gem, all Sergio Mitre could do for Florida was keep the game close. When the Marlins teed off on the Devil Rays bullpen, he wound up with a victory.
"It shows the character of the club," Florida manager Fredi Gonzalez said. "They just keep battling and keep coming after you, and it's good."
Mitre (2-2) gave up five hits and had three strikeouts, retiring 11 in a row at one point. Kevin Gregg pitched the ninth for his third save in three opportunities.
The Marlins scored three runs in the eighth against the Devil Rays' struggling bullpen. Miguel Cabrera cut the deficit to 3-2 with an RBI single off Shawn Camp (0-1). Jeremy Hermida tied it with a run-scoring double before Miguel Olivo drove in the go-ahead run on a grounder.
Shields cruised and the Devil Rays led 3-0 going into the seventh, when back-to-back doubles by Cabrera and Josh Willingham gave Florida its first run.
Shields allowed a run and five hits with eight strikeouts in seven innings.
"You can't control some of the things that happen in a ballgame," Shields said.
Shields has no-decisions in his last three games despite giving up just four runs and 14 hits in 24 innings.
"He pitched great again," Tampa Bay manager Joe Maddon said. "I know it's frustrating for him. It's frustrating for us."
Shields' ERA dropped from 3.13 to 2.94.
"He was pitching so great there was no room for error," Mitre said.
Carlos Pena extended his season-high hitting streak to seven games and gave the Devil Rays a 2-0 lead on his ninth homer in the first. He has four homers and nine RBIs over the stretch. Greg Norton added an RBI single in the third.
It was the first Tampa Bay has been swept at home in a series of three or more games since the final series of the 2005 season.
"We played well enough to win today to a certain point and then we gave it up late," Maddon said. "We've done that way too often this year."
Florida's Dan Uggla had a one-out double in the first, but was left stranded when Shields struck out Hanley Ramirez and Cabrera. The Marlins didn't get another hit until Ramirez singled with one out in the fourth.
Both benches were warned in the ninth after Devil Rays reliever Al Reyes hit Uggla with a pitch. An inning earlier, Marlins reliever Matt Lindstrom threw a pitch high and inside on Elijah Dukes, who took a step toward the mound and stared Lindstrom down.
"You come in hard and then go over your head, your natural reaction is to protect yourself," Dukes said. "I just had to ask him, 'What's the problem?' He didn't say anything, so I guess there was no problem."
Cabrera walked halfway to the plate from his third base position on the play before stopping, but nothing further developed.
"He was just telling me 'Calm down,"' Dukes said. "That was it."
Gonzalez said no one is trying to hit anybody in a one-run game.
"It's just a lot of emotions, a lot of intensity," Gonzalez said.
- The Marlins are 99-72 all-time in interleague play, the best record for a National League team.
- Ramirez appeared to get hit on or near the left hand by an eighth-inning pitch from RHP Brian Stokes, but he remained in the game.
- Tampa Bay LF Carl Crawford was rested. Jonny Gomes, normally a DH, made his first start of the season in left and second overall in the outfield.
- Amezaga (heel) started in center after sitting out the previous two games.
- Tampa Bay LHP Jon Switzer (left shoulder) has started a minor league rehab assignment with Triple-A Durham.
- The Marlins have at least one extra base hit in all but one game this season.
- Willingham has 31 RBI this season, all against right-handed pitchers.