BOSTON -- Mookie Betts ended a series of late rallies with a home run that cleared Fenway Park and set off another celebration in Boston.
"Fortunately, I got enough of a good pitch to hit and got it up in the air," Betts said after his first game-ending home run.
Betts homer capped a wild last few innings. The Twins rallied from a 2-1 deficit to take a one-run lead in the top of the ninth. Rafael Devers hit a leadoff homer in the bottom of the inning to force extras.
"That's the definition of a team -- we've just to pick each other up," Betts said. "We may not do everything well one particular night, but we can find a way to win a game and I think that's what makes us good."
It was the 25th homer of the season for Betts, Boston's All-Star right fielder who is leading the majors with a .345 batting average.
Jackie Bradley Jr. hit a two-run homer in the fifth for Boston and Chris Sale struck out 10 over six scoreless innings. Sale was on track to win his sixth straight start before the late hits took both starters out of the decision.
"Just unbelievable. We know what this lineup can do," Sale said. "Our guys are just picking us up."
Tyler Thornburg (1-0) got the win by holding the Twins scoreless in the 10th after Craig Kimbrel blew a shot at his 33rd save in the ninth. Eddie Rosario hit a two-run double with two outs in the ninth to give Minnesota its first lead.
Kimbrel came in for the last out of the eighth but couldn't survive his own control issues in the ninth. Robbie Grossman drew a walk with one out and advanced on a wild pitch, Jorge Polanco walked with two outs and Rosario drove in both with a double to center.
"We hung around, we made Sale work," Twins manager Paul Molitor said. "We didn't score but we got him up there."
Sale was done after throwing 100 pitches in six innings. The Twins rallied against Boston's bullpen, but couldn't hold the lead themselves.
Devers homered off Fernando Rodney with a line drive to right, just out of Max Kepler's reach as he crashed hard into the short wall. Kepler stayed down on the warning track for a minute or two but remained in the game.
It was the sixth blown save of the season for Rodney. Matt Belisle (1-1) took over in the 10th and faced only Betts, who ended it with his 25th homer of the season.
"We're a good offensive team, we're just kind of struggling right now," Boston manager Alex Cora said.
Lance Lynn also pitched six innings, holding Boston to just two runs on Bradley's homer in the fifth. He struck out three and walked two.
Betts' teammates cooled him off by dousing him with a cooler full of ice water when he answered the curtain call from the Red Sox fans who stuck around in the heat for the ending.
"I had a feeling it was coming. It was just a little colder than I wanted it to be," Betts said.
Sale extended his scoreless-innings streak to 23 straight innings and picked up his 200th strikeout when he got Mitch Garver swinging to end the first. Sale reached 200 strikeouts in 136 innings, breaking his own AL record of 141 1/3 innings he set last year.
Steve Pearce started for Boston at first base and made a key defensive play to end a threat by the Twins in the seventh, starting a double play with a throw to second and completing it by making a catch while lying face-down across first base after tripping.
Twins: 1B Joe Mauer, who has a career batting average of .195 against Sale, had the night off until pinch-hitting in the eighth, flying out to left on the first pitch from Kimbrel. . The Twins were also without IF Eduardo Escobar, who was traded to Arizona earlier Tuesday for three prospects. Escobar was second on the club in hits (101) and led Minnesota with 63 RBI.
Red Sox: 1B Mitch Moreland was out of the starting lineup for the second straight night with soreness in his left knee. Moreland said he's trying to give the knee a few days of rest and hopes to be back later in the weekend.
Twins: RHP Jake Odorizzi (4-6, 4.37 ERA) is 4-5 in 17 career starts against Boston with an ERA of 4.45.
Red Sox: RHP Rick Porcello (12-4, 3.93) didn't allow a run in his last start, scattering six hits over six innings in Boston's 5-3 win at Baltimore on Monday.
Fantasy baseball closer stock watch: Stranger tides ahead for Pirates
Eric Karabell takes his weekly look at the never-ending carousel of fantasy baseball closers, including which pitchers are the most likely to be on the move before the trade deadline.
Fantasy baseball forecaster: Team hitting ratings
Stay ahead of the game and optimize your fantasy baseball hitters with our forecaster, which provides a rolling 10-day outlook of every team's hitting matchups as well as the potential for stolen bases.
Fantasy baseball forecaster: Pitcher projections for the next 10 days
Keep up to date on who is pitching -- and how well they're expected to do -- with our forecaster, which provides a rolling 10-day outlook of every team's probable starting pitchers with game score projections.
One player all 30 MLB teams should trade for -- or away -- before the deadline
Starling Marte to the Yankees? Max Scherzer to the Rays? We map out a July blueprint for every GM to follow.
Which top players could be dealt before the MLB trade deadline?
Jeff Passan says the Nationals are a team to watch at the trade deadline, as Max Scherzer could be the most sought after player in the league.
Scherzer expected to start for the Nationals against Phillies
Washington Nationals (33-36, fourth in the NL East) vs. Philadelphia Phillies (34-35, second in the NL East)