The Rays' mission against the hot Marlins was clear Friday night: Keep the game close and get it to the bullpens, where Tampa Bay had an advantage.
They did exactly that, breaking out with four runs in the eighth inning against Florida relievers to beat their South Florida neighbors 7-3.
The Rays moved to a season-high five games over .500 (40-35) and 3-1 on a six-game homestand that included three against the defending World Series champion Phillies. Tampa Bay also has taken 10 of the past 12 in the Citrus Series.
After an expected pitching duel between James Shields and Josh Johnson materialized, the Rays got a three-run double from surging B.J. Upton in the bottom of the eighth against Brian Sanches and added another run on a Carl Crawford single.
Tampa Bay's bullpen has been on a tear of late and continued the trend with 21/3 scoreless innings. Dating to June 8 against the Yankees in New York, the Rays' bullpen has compiled a 1.08 ERA in 50 innings pitched.
J.P. Howell (3-2) pitched the final 11/3 innings and got the win.
Shields beat two-time Cy Young Award winner Johan Santana in his previous start last Saturday against the Mets and was facing Johnson, who at 7-1 was one of the hottest pitchers in the National League.
The Rays' opening-day starter gave up single runs in the first, fifth and seventh innings and went 62/3 innings.
"My job was to keep us close, and I kept us as close as I could," said Shields, who had his team-high 10th quality start.
Chris Coghlan, the East Lake High grad whose hard slide into second May 24 at Florida caused second baseman Akinori Iwamura's serious knee injury, opened the game with a double to the left-center wall and scored on a Hanley Ramirez double.
Tampa Bay answered that run in the bottom of the first when Carl Crawford singled, got his 38th stolen base and scored on a hard line drive to right-center by Carlos Pena.
Evan Longoria's hard shot off the glove of third baseman Emilio Bonifacio gave the Rays a 2-1 lead in the third. The Rays had a chance for more damage when Pena followed with a walk, but Ben Zobrist, who struck out twice against Johnson, hit into a double play.
The Marlins tied the game at 2 in the fifth on a two-out single by Jorge Cantu and a double by Ross Gload. Cantu just beat the throw to the plate by cutoff man Zobrist.
Tampa Bay got its one-run margin back in the bottom of the frame on Upton's speed. Upton walked, stole second, went to third on a Crawford ground out and scored on a wild pitch by Johnson.
Ramirez's two-out solo home run in the seventh, only the third home run Shields has allowed in his past nine starts, tied the game at 3.
Shields gave up an ensuing single by Cantu, and Manager Joe Maddon went to his bullpen, which had pitched to a 5-1 record and 2.11 ERA since giving up 10 runs at Cleveland on May 25.
Lefty Randy Choate failed to get the man he was brought in for, walking Gload, but Grant Balfour came on and got Dan Uggla to fly out to center to end the inning.
The Rays, in turn, did their damage against the Marlins' bullpen in the bottom of the eighth.
Zobrist and Gabe Gross walked against Renyel Pinto (2-1), and with two out, Dioner Navarro was intentionally walked by Sanches. Upton came up at the top of the order with the bases loaded and crushed a line drive to center to clear the bases.
Crawford followed, and the Rays led 7-3.
Johnson pitched well for the Marlins, getting his eighth consecutive quality start and 14th for the year. He finished the month of June 3-0 with a 2.47 ERA.
Jason Bartlett went 0-for-4 to see his club-record 19-game hitting streak end. The shortstop batted .384 with two home runs, three triples, seven doubles, 21 RBis, 18 runs and five stolen bases during the streak.
Cantu went 3-for-5 for the Marlins and his hitting .458 in his past five games.