Duncan drove in three runs in each half of a day-night doubleheader, and Cleveland erased a six-run deficit to beat the Minnesota Twins 7-6 on Saturday night for the sweep.
The Indians also won the opener 8-2 as Duncan hit a two-run single with two out in the first and a tiebreaking sacrifice fly in Cleveland's six-run sixth inning.
Duncan's two-run single off a 3-2 pitch by Matt Capps put Cleveland ahead 7-6 in the seventh inning of the nightcap as the Indians won for the eighth time in 11 games. Cleveland is two games over .500 with four to play.
"Finishing with a winning record and in second place are huge for us," Duncan said. "That second game was a lot of fun."
The Twins (60-98) have lost 19 of 21 to reach the second-most losses since the team moved to Minnesota in 1961, ahead of only a 60-102 record in 1982. They have lost eight straight to Cleveland for the first time since a nine-game streak in 1959 as the Washington Senators.
Two Cleveland rookies earned their first career win. Left-hander Nick Hagadone (1-0) pitched an inning to get the victory in the second game. Right-hander Zach Putnam (1-0) struck out three over 1 1/3 innings in the opener.
"You don't see that very often," Indians manager Manny Acta said. "Those two kids did a good job, our offense stepped up and Shelly continues to be a huge factor for us this month."
Chris Perez pitched the ninth inning of the second game for his 36th save in 40 chances.
Drew Butera drove in three runs from the No. 9 spot in Minnesota's order, helping the Twins build a 6-0 lead Saturday night against Mitch Talbot, who was recalled from Triple-A Columbus for the start.
"We ended up losing a ballgame we thought we had pretty handily and played pretty good," Twins manager Ron Gardenhire said. "It was another loss on a very long day."
Duncan leads the Indians with six homers and 20 RBIs in September.
"Getting more playing time has helped," Duncan said. "Now, if I don't get a hit I can say, 'Well, there's always tomorrow.' Before, it was 'There's always maybe next week.' I've always believed I can play well up here. I'm 31 going on 32, but I want to play as long as I can."
The Indians lost another player when center fielder Trevor Crowe strained his left shoulder trying to make a diving catch on Ben Revere's double in the first inning of the opener. Manager Manny Acta said Crowe, who missed five months recovering from right shoulder surgery in March, was taken for tests and will not play the rest of the season.
All-Star shortstop Asdrubal Cabrera left the second game in the sixth inning with what the team announced as a bruised right elbow. He was hit by a pitch Friday night.
"With so many guys out, Shelley has picked us up," Acta said.
Minnesota's Danny Valencia and Denard Span were back in the lineup after missing one game. They were involved in a minor car accident on the way to the airport on Thursday, when Span drove into the back of Valencia's car.
Indians INF Cord Phelps broke an 0-for-27 streak with a single in the second game. ... Indians DH Jim Thome drew his 1,723rd walk, 10 behind Mickey Mantle for seventh on the career list. ... The Indians honored broadcaster Mike Hegan for his 50 years in pro baseball. Hegan played 12 years in the majors and is in his 34th season at the microphone, the past 23 with Cleveland. ... Twins OF Ben Revere extended his hitting streak to a career-high 12 games (.426, 23-for-54) and got his 34th stolen base, which leads AL rookies. ... Twins rookie 1B Chris Parmelee was 0-for-4 with four strikeouts in the opener. ... Minnesota placed C Joe Mauer (pneumonia), 1B Justin Morneau (concussion symptoms) and INF Tsuyowshi Nishioka (strained oblique) on the disabled list. All the moves were retroactive to mid-September. ... Cleveland closes its home season Sunday with RHP Fausto Carmona (7-15) opposing Twins RHP Liam Hendricks (0-2).