MINNEAPOLIS -- Doug Fister's strong outing helped Detroit overcome a bad inning on defense.

Miguel Cabrera became the first player to reach 100 RBIs this season with a run-scoring single and Fister pitched eight strong innings for the Detroit Tigers in an 8-4 win over the Minnesota Twins on Tuesday night.

Fister (7-7) did not allow an earned run and struck out seven to win for the third time in four starts.

"Tonight was a little bit of a struggle at times, but we ended up working together and pulling it out," he said. "We showed when there's a couple mishaps or whatever we can still stick together and play. We still got the things done that we need to get done to pull out a team win."

The Tigers overcame two errors in the third inning to end a three-game slide. Detroit remains two games back of Chicago in the American League Central.

Josh Willingham hit his career-high 30th home run for Minnesota.

Tied at 4 in the sixth inning, Andy Dirks hit a solo home run off Brian Duensing (2-8) to put the Tigers ahead for good.

Cabrera got his 100th RBI with a seventh-inning single off Casey Fien, becoming the third player in Tigers history to collect at least 100 RBIs in five or more consecutive seasons.

Harry Heilmann did it in seven straight seasons (1923-29), and Charlie Gehringer did so in five straight (1932-36). Cabrera added an RBI double in the ninth.

"He'll have five more with 100 unless he gets hurt," manager Jim Leyland said. "He can hit the ball 450 feet to 500 feet, and he can hit it over the first baseman's head or down the left-field line. Just a great hitter."

This is the second straight year that Fister has thrived in the season's second half.

In seven starts since the All-Star break, the right-hander is 5-1 with a 1.52 ERA and 48 strikeouts. Last year, Fister was 8-1 down the stretch for the Tigers after being acquired in a trade with Seattle.

"It's just been some fine-tuning," said Fister, who also battled a left-side strain earlier in the season. "Being able to stay consistent is my biggest focus, and the only way to do it is to get out there and do it, get the confidence, get the feel, the touch."

Other than an inning in which two errors led to all of Minnesota's runs, Fister retired 21 of 26, including Joe Mauer and Willingham to start the eighth before Justin Morneau doubled to center. Ryan Doumit grounded out to end the threat.

"He still had pretty good stuff at the end, and with the ability to change speeds and everything, we left him in there," Leyland said. "I was a little nervous when Morneau hit the double, but he made a good pitch and got through it."

Fister threw a season-high 120 pitches.

Duensing had two bad innings, and he continues to struggle since joining the Minnesota rotation June 23. He allowed five runs in six innings, striking out four.

He's now 1-6 with a 6.34 ERA in eight starts overall this season. He's allowed 16 runs -- 11 earned -- and 29 hits in 19 innings while going 0-2 in three starts this month.

The Tigers' offense gave Fister plenty of early support.

Jhonny Peralta had a two-run single in the first. Gerald Laird had an RBI triple in the second and scored on an RBI double by Austin Jackson to make it 4-0.

"It's really frustrating when you come out and put your team down right away; it's hard to have a chance to win," Duensing said. "I don't know if I'm coming out too amped or what, but the ball seems to be up in the zone, and I don't get away with much that way."

But the Tigers were sloppy on defense in the third inning with two errors leading to four unearned runs.

Omar Infante began the inning by misplaying a grounder by Jamey Carroll. One out and three batters later, Darin Mastroianni hit a grounder to Infante, who was unable to tag Ben Revere running to second base -- he singled. Infante's throw to first would have gotten Mastroianni, but Prince Fielder pulled his foot off the bag.

Fielder then threw wildly to second trying to force Revere, allowing Carroll to score. Two batters later, Willingham hit a three-run home run into the bullpens.

"It felt good, but I wish we would have won the game," Willingham said.

Game notes

Willingham is the first Twins player to hit at least 30 homers in a season since Michael Cuddyer (32) and Morneau (30) in 2009. ... Fielder is hitless in his past 13 at-bats. ... Minnesota optioned shortstop Brian Dozier to Triple-A Rochester and will select the contract of infielder Pedro Florimon from the Red Wings prior to Wednesday's game. ... In a continued effort to try to find solid production from the fifth spot in the lineup, Leyland had Peralta bat there for just the second time this season. He's batted sixth, seventh or eighth a combined 100 times. Delmon Young was in the five-hole for most of the season before Brennan Boesch was given a chance. Alex Avila batted fifth Monday. ... In Wednesday afternoon's series finale, Detroit is scheduled to send Max Scherzer (11-6, 4.65 ERA) to the mound against Minnesota's Cole De Vries (2-3, 4.77).