Brian Dozier gave Minnesota an early lead with a three-run homer in the second, but the Tigers scored five times in the bottom half of the inning to move in front 6-5.
Minnesota tied the score in the third, fell behind again by a run in the fifth and then put on a late-game surge to win for the first time in three outings.
Carroll's double in the sixth gave the Twins an 8-7 lead, Alexi Casilla added an RBI single in the seventh and Trevor Plouffe hit a two-run homer in the ninth to finish the scoring.
It was only the fifth win for Minnesota against Detroit in their last 23 meetings.
The Twins' bullpen gave up a lone run on five hits in the final seven innings with Alex Burnett (1-0) getting the win.
Burnett, who worked an inning, won for just the fifth time in 123 relief appearances scattered over three seasons.
Duane Below (2-1) gave up the go-ahead run in the sixth to take the loss.
Minnesota starter Nick Blackburn allowed six runs in two innings. Detroit's five-run second featured five consecutive singles.
The teams combined for 25 hits and four Detroit errors led to four unearned runs.