After three years as a role player and pinch-hitter, Wilson played regularly in 2004, hitting.264 with 29 home runs and 82 RBI in 155 games, but posted a franchise-record 169 strikeouts in 561 at bats. He led the major leagues at being hit by pitches in 2002 and 2004. Wilson tied the major league single-season record for pinch-hit home runs with seven in 2001. In 2005, Wilson played in only 59 games as a result of two separate hand injuries that caused him to spend over half the season on the disabled list, playing in only five games between May 6 and August 28. He ended the season with a.264 batting average, 5 home runs, and 22 RBI in 197 at bats. At the trade deadline of the 2006 season, Wilson was traded to the New York Yankees for Shawn Chacón. According to the New York Post, at least one general manager in the National League found the deal inexplicable from the Pirates' standpoint. Voicing the opinion that Pirates GM Dave Littlefield had undersold Wilson, the anonymous GM was quoted as saying, "We really thought Wilson was a guy a lot of AL teams would be interested in. He is a high strikeout guy, but he can hit a fastball, damage lefty pitching, and not embarrass himself in right field or at first." Overall in 2006, Craig batted.251 with 17 home runs and 49 RBI. Though he only batted 359 times, he struck out 122 times. The Yankees did not re-sign him, causing him to become a free agent. The Atlanta Braves signed Wilson to a one-year contract worth $2 million USD on January 18, 2007. After 40 games of the 2007 season with the Braves, Wilson was granted his unconditional release on May 17, 2007, to make room for Brayan Peña on the roster. On May 28, 2007, he signed a minor league deal with the Chicago White Sox, but ended up undergoing season-ending shoulder surgery in June. Wilson was released by the White Sox at the end of the 2007 season. On February 9, 2008, Wilson signed a minor league contract with an invitation to spring training with the Cincinnati Reds, but was released on February 21 after failing a physical. On April 8, 2008, he signed a minor league deal to return to the Pittsburgh Pirates. On July 10, he was traded to the Seattle Mariners for a player to be named later. After finishing the season with the Triple-A Tacoma Rainiers, he became a free agent, ending his professional playing career.