Porcello took a shutout into the eighth inning, Betts hit his 22nd home run and scored twice and the Red Sox reduced their magic number for clinching a playoff spot to six, winning for the eighth win in 10 games. They also kept their AL East lead over the New York Yankees at three games with 14 left to play.
Porcello (10-17) flirted with a complete game and a shutout until the eighth inning. He gave up one unearned run in 7 1/3 innings a day after the Red Sox used eight relievers in a 15-inning win.
"I'm the only guy who got rest last night," said the 2016 AL Cy Young Award winner, "and knowing how many guys got used out of our bullpen yesterday and how much those guys have thrown over the past week, it's important to pitch deep into games at this time of the year. Getting some quick innings and getting into the eighth inning was big for us."
"To get into the eighth inning the way (Porcello) did, just a great job," manager John Farrell said. "When we score runs for him, he's as good a pitcher as we saw last year. I know his ERA (4.46) is inflated a little this year, but when we get him three runs, we're in pretty good shape."
Adeiny Hechavarria led off Tampa Bay's seventh with a double against Porcello, moved to third on a passed ball and scored the Rays' run when a throw from first baseman Mitch Moreland bounced off a runner on a double-play attempt.
Betts started the second inning with his homer off starter Alex Cobb and drove in another run with a sixth-inning single, his 12th RBI in eight games. The right fielder who finished second in the MVP vote last year is hitting .318 with four home runs in his last 10 games.
"He's on a 10-day run here where we're seeing a guy we saw for two years leading into this year," said Farrell.
Rafael Devers drove in Betts with a two-out double off reliever Dan Jennings.
Cobb (11-10) gave up three runs and six hits in 5 1/3 innings. The two runs in the sixth came after Betts singled on the pitch after Cobb thought he should have had a called strikeout.
"It's frustrating," Cobb said. "To have two tough losses like that coming back home is getting harder to handle."
Logan Morrison was ejected from the Rays' dugout during the sixth inning.
Red Sox: LHP David Price, who last pitched on July 22 because of left elbow inflammation, could make an appearance out of the bullpen Sunday. He was activated Thursday, a day after a 48-pitch bullpen session. ... DH Hanley Ramirez missed a third straight game after an MRI revealed some inflammation in his left shoulder.
Rays: RHP Jake Faria made his first relief appearance after missing a month with an abdominal strain. ... LHP Xavier Cedeno (left forearm tightness) has not pitched since April 16, but the Rays are hopeful of getting him in one or more of their 13 remaining games.
LHP Eduardo Rodriguez struck out a career-high 13 in 5 1/3 innings in his last start against the Rays on Sept. 25, 2016. He will pitch Sunday's series finale against RHP Jake Odorizzi. It will be Odorizzi's 17th career start against Boston, including two losses this season.