In May 2006, Silva was demoted to the bullpen after struggling through the beginning of the season. In June, he re-entered the rotation when the struggling # 5 starter, Scott Baker, was demoted to the Twins' Triple-A team in Rochester. He gave up a major-league-worst 1.90 home runs per 9 innings, giving up 38—more than any other major league pitcher, and had a major-league-worst batting average against of .326. In both 2005 and 2006 Silva gave up more home runs than walks in each season becoming one of 15 pitchers that qualified for the ERA title to accomplish.
Through 2006, Silva posted a 42–32 record with 306 strikeouts and a 4.35 ERA in 743 innings. In 2007, Silva started as the fifth starter behind Johan Santana, Boof Bonser, Ramón Ortiz, and Sidney Ponson. In his final season with the Twins, Silva finished 13-14 in 33 starts with a career high 89 strikeouts.