Xander Bogaerts had two RBIs for the Red Sox, who had a season-high 16 hits, and finished 6-4 on a road trip through Baltimore, Seattle and Minnesota.
After a first-inning single by Logan Morrison, ending a 0-for-30 stretch against Boston, Porcello (9-3) retired 19 of 20 Twins hitters, including the last 16. Throwing 97 pitches, he struck out five and walked one.
Porcello finished seven innings for the first time in 10 starts since April 29. His best previous start of the season was April 12 against the Yankees, when he allowed two hits and struck out six in seven innings.
Kyle Gibson (2-5) allowed seven hits and two earned runs in six innings for Minnesota, striking out five for his ninth quality start this season. He had only 10 in 2017 and eight in 2016.
Betts hit the first pitch of the fifth inning into the front row of seats in right-center for a 2-0 lead. He finished with three hits and has reached base eight times in his last three games.
The Red Sox were 5 for 14 with runners in scoring position, finishing the three-game series 7 for 36.
Bogaerts' two-run double keyed a three-run seventh against Ryan Pressly. Benintendi hit a two-run shot in the eighth.
Twins 3B Eduardo Escobar was hit near the right elbow by Porcello in the first. The major league leader with 32 doubles, Escobar immediately dropped to the ground in pain as a trainer rushed out. After a couple of minutes of consultation, Escobar trotted to first base. Diagnosed with a right elbow contusion, he was removed from the game after striking out in the third and is day to day.
Boston's J.D Martinez hit the dirt to avoid a high inside pitch from Gibson in the top of the inning. Sandy Leon was hit by Gibson in the sixth.
Red Sox: LHP Drew Pomeranz, out since June 5 with left biceps tendinitis, is expected to get on a mound this weekend and throw a bullpen session, according to manager Alex Cora.
Twins: OF Eddie Rosario missed the game with a sore throwing shoulder. He is considered day to day. Since May 1, Rosario is hitting .364 with a league-best 68 hits in that span, including 16 doubles and 13 home runs.
Red Sox: Open a six-game homestand Friday with RHP Steven Wright (2-1, 1.23) scheduled to start against Seattle's LHP Wade LeBlanc (3-0, 2.63).
Twins: Welcome Texas on Friday for a three-game weekend series with RHP Fernando Romero (3-2, 4.17) to face the Rangers' LHP Mike Minor (4-4. 5.35).
© 2018 Associated Press. All Rights Reserved. Material may not be redistributed.
MINNEAPOLIS (AP) - Rick Porcello allowed one hit in seven innings, Mookie Betts and Andrew Benintendi homered, and the Boston Red Sox beat the Minnesota Twins 9-2 Thursday to avoid a series sweep.