In 2004, Duke led all minor league pitchers with a 1.46 earned run average (24 earned runs in 148.1 innings pitched). He posted a 15–6 record in 26 combined starts between Class-A Lynchburg and Double-A Altoona, and his 15 wins tied for third-most among all minor league pitchers.
Following the 2004 season, Duke was named Pittsburgh's Minor League Pitcher-of-the-Year and earned Carolina League Pitcher-of-the-Year honors.[2] He was selected by Baseball America as the sixth-best prospect in the Eastern League, and the best pitching prospect (fourth-best prospect overall) in the Carolina League. He was also recognized by the publication as having the best breaking pitch in the league.
Duke made his major league debut on July 2, 2005, against the Milwaukee Brewers, striking out nine and receiving a no-decision in the Pirates' 5–3 loss. His nine strikeouts were the most by a Pirate making his MLB debut since Tim Wakefield on July 31, 1992.
Duke's debut month in July 2005 included a 3–0 shutout victory against Greg Maddux and the Cubs on July 16 and 22 consecutive scoreless innings from July 2 to 21. He was named National League Rookie of the month for July while compiling a 0.87 ERA, the best among all starting pitchers in the Major Leagues.[3] He became only the second Pittsburgh rookie to win his first five decisions, along with Whitey Glazner. Duke also became one of only four pitchers during the Live-ball era to record an ERA below 1.00 in their first six starts (the others being Fernando Valenzuela, Boo Ferriss, and Steve Rogers).[4] Duke finished 2005 with an 8–2 record in 14 starts, striking out 58 in 84.2 innings. He finished in fifth place in the Rookie of the Year voting, garnering 10% of the vote.
Duke's first full season with the Pirates in 2006 was as the new team ace, anchoring a very young rotation with Ian Snell. Duke had a number of good starts in the first half of the season, but many of them were undone by the Pirates' weak bullpen and lack of run support for Duke. The second half of 2006 was a re-emergence of the Duke who had dazzled Pittsburgh with his stuff from the previous year, and, on a side note, it was the first time the Pirates had compiled a winning record for a half of a season since 1992. Duke recorded two complete game efforts, the only two that Pittsburgh had all season. His first was a shutout of the Chicago Cubs on May 2, but he only had two strikeouts and a walk. His better effort was on August 11 against the St. Louis Cardinals. While he scattered eight hits, Duke only allowed one run (which was earned), recorded no walks and seven strikeouts. Duke also threw 11 fewer pitches than his previous complete game effort, and recorded 14 ground-ball outs. Duke's final line for the 2006 season was 10–15 with a 4.47 ERA and 117 strikeouts against 68 walks. During the 2006 season, he led the National League in hits allowed, with 255, and his 15 losses were third-most in the league.[5] Duke also became the first Pirates starter since Kris Benson in 2000 to throw more than 200 innings, with 215+1⁄3 innings pitched.
In 2007, Duke finished 3–8 with an ERA of 5.53.[5]
In 2008, Duke was 5–14 with an ERA of 4.82 and he gave up more doubles than any other pitcher in the majors, with 58, and more sacrifice hits, with 14.[6] He gave up 230 hits, second-most in the National League, and his 14 losses were fourth-most in the league.[5]
Duke was named to the 2009 Major League Baseball All-Star Game, replacing the injured Matt Cain.[7] He finished off 2009 with an 11–16 record, a 4.06 ERA, three complete games (third-most in the league), one shutout, 23 home runs given up, three hit batsmen, 231 hits (second-most in the league), 49 walks, 106 strikeouts, a .285 average against, 1.31 walks and hits per innings pitched, and 213 innings pitched. Duke's 16 losses in 2009 led the National League.[5]
In 2010, Duke compiled a record of 8–15 with a 5.72 ERA, and a .321 batting average against.[8] His 15 losses in 2010 were second in the National League.[5]
On May 28, 2011, Duke was activated off the disabled list and made his first start with the Arizona Diamondbacks, replacing Micah Owings in the rotation. He also hit his first major league home run that day, a three-run home run off Bud Norris.[10] Duke made nine starts in the rotation, going 2–4 with a 5.47 ERA, and opponents hitting .336/.368/.481 off him. On July 15, Duke was relocated to the bullpen,[11] where he fared slightly better in a long-relief role, recording a 3.86 ERA in 25.2 innings, only striking out six while walking eight. Overall in 2011, Duke went 3–4 with a 4.91 ERA in 21 appearances. On October 31, 2011, he elected to become a free agent.[8]
Houston Astros
Duke signed a minor league contract with the Houston Astros on January 27, 2012. He also received an invitation to spring training; however, he was released on March 27.[12]
Washington Nationals
Duke signed a minor league contract with the Washington Nationals on March 29, 2012, playing for the Washington Nationals's AAA affiliate, the Syracuse Chiefs.[13] He was called up to the majors on September 3 and appeared in eight games, pitching 13.2 innings with a 1.32 ERA.[14][15]
On December 2, 2012, Duke re-signed with the Nationals on a one-year deal to serve as the team's long reliever.[16] He was designated for assignment on June 4, 2013, after posting an 8.71 ERA for the team in 20+2⁄3 innings.[8] On June 10, 2013, Duke was released by Washington.[17]
Cincinnati Reds
Duke signed a minor league contract with the Cincinnati Reds on June 13, 2013.[18][19] He eventually was promoted to the big league club and recorded an 0.84 ERA in 10+2⁄3 innings.
Milwaukee Brewers
Duke was signed as a free agent on January 15, 2014,[8] and invited to spring training by the Milwaukee Brewers for 2014 and made the roster as a left-handed relief specialist. He recorded his first win of 2014 on April 20 against the Pittsburgh Pirates. Duke had emerged as a key member of the Brewers' bullpen, finding success against lefties and righties. As of July 21, his ERA was 1.16, and he had struck out 49 batters in 38+1⁄3 innings pitched. Duke finished the year strongly, recording a 2.45 ERA with 74 strikeouts against only 17 walks in 58.2 innings, appearing in 74 games and notching 12 holds. He limited left-handed hitters to a .198 batting average. Duke became a free agent on October 30, 2014.[8]
Chicago White Sox
Duke signed a three-year, $15 million contract with the Chicago White Sox on November 18, 2014.[20]
St. Louis Cardinals
On July 21, 2016, the White Sox traded Duke to the St. Louis Cardinals for outfielder Charlie Tilson.[21] On October 14, 2016, it was revealed that Duke underwent surgery to repair a forearm flexor muscle and UCL in his left arm, which was expected to sideline him for the entire 2017 season.[22] However, on July 21, 2017, Duke completed a rehab assignment and returned to the Cardinals' active roster, making his first appearance since the surgery on July 21.[23]
Minnesota Twins
Duke signed a one-year deal with the Minnesota Twins on December 26, 2017.[24] In 45 appearances, Duke was 3–4 in 37+1⁄3 innings.
Seattle Mariners
On July 30, 2018, Duke was traded to the Seattle Mariners for pitcher Chase De Jong and infielder Ryan Costello.[25] Duke struggled after being acquired by Seattle, finishing with a 5.52 ERA in 27 appearances.
Return to the Reds
On February 11, 2019, Duke returned to the Reds on a one-year, $2 million deal.[26]
On July 1, the Reds designated Duke for assignment.[27] He was released on July 6, 2019.