Harris began his professional career in 2001 with the Single-A Lansing Lugnuts of the Midwest League, batting .274 with four home runs and 22 RBI in 32 games.[7] In 2002, with the Single-A Daytona Cubs, he hit .329 in with 13 homers and 54 RBI in 110 games.[7] He was selected as a Florida State League All-Star and also a High-A All-Star, leading to a promotion to the Double-A West Tenn Diamond Jaxx at the end of the season. In 2003, he played in 120 games with the Diamond Jaxx and hit .281 with five home runs and 52 RBI.[7]
Prior to the 2004 season, Harris was ranked as the Cubs' eighth-best prospect by Baseball America.[8] He began the season with the Triple-A Iowa Cubs in the Pacific Coast League. He hit .311 with eight home runs and 26 RBI in 56 games, leading to his first Major League call-up with the Cubs on July 3.[9]
Harris made his major-league debut on July 6, 2004, as the starting third baseman against the Milwaukee Brewers. In the first inning, he committed an error that led to four unearned runs, but recovered by posting his first Major League hit with an RBI double off Víctor Santos in the third inning.[8][10] In three games with the Cubs, he was 2-for-9 (.222) with an RBI.[11]
The Expos moved to Washington, D. C. in 2005 and became the Washington Nationals. Harris spent most of 2005 and 2006 with the team's new Triple-A affiliate, the New Orleans Zephyrs. He hit .270 with 13 home runs and 81 RBI in 127 games in 2005, and .283 with five home runs and 32 RBI in 59 games in 2006.[7] With the Nationals, he only appeared in four games in 2005 (3-for-9, one home run, 3 RBI) and 17 games in 2006 (8-for-32, 2 RBI).[11]
Harris was sold to the Tampa Bay Devil Rays on January 2, 2007,[15] and spent the majority of the season as the Devil Rays' starting shortstop. In 137 games, he hit .286 with 12 home runs and 59 RBI.[11] He was voted the Rays' Heart and Hustle Award winner at the end of the season.[16]
On October 11, 2009, Harris was the last Major League batter in Metrodome history as the Yankees defeated the Twins 4–1 in Game 3, eliminating the Twins from the playoffs.[18]
Harris was the front-runner to start at third base for the Twins in 2010, but Nick Punto got the nod on Opening Day. Punto was later replaced by rookie Danny Valencia and on June 24, Harris was outrighted to Triple-ARochester after a 5–0 loss to the Milwaukee Brewers.[19]
In three seasons with the Twins, Harris hit .251 with 14 home runs and 90 RBI in 296 games.[11] The Twins were Central Division Champions in 2009 and 2010.
Baltimore Orioles
On December 9, 2010, the Baltimore Orioles acquired Harris in a trade along with J. J. Hardy for minor-league pitchers Brett Jacobson and Jim Hoey.[20] He spent the entire season in Triple-A with the Norfolk Tides and hit .225 with 10 homers and 50 RBI in 136 games.[7] He became a free agent at the end of the season.
Colorado Rockies
Harris signed a minor league contract with the Colorado Rockies on January 6, 2012.[21] He played for the Triple-A Colorado Springs Sky Sox and hit .317 with nine homers and 63 RBI in 106 games.[7]
Los Angeles Angels of Anaheim
On November 15, 2012, Harris signed a Minor League contract with an invitation to Spring Training with the Los Angeles Angels of Anaheim.[22] He made the Angels' Opening Day roster as a utility player, and hit .206 with four home runs and 9 RBI in 44 games for the Angels, while playing shortstop, second base, third base, first base and left field.[11] The Angels designated Harris for assignment on July 20, 2013, and he elected free agency three days later.[23]
New York Yankees
Harris signed a minor league deal with the New York Yankees on July 26, 2013.[24] He played in 22 games for the Triple-A Scranton/Wilkes-Barre RailRiders, where he hit .233 with a home run and 4 RBI.[7] He was released on August 20.
Texas Rangers
Harris signed a minor league deal with the Texas Rangers one day later, on August 21.[25] With the Round Rock Express, he appeared in 12 games and batted .244 with two home runs and 5 RBI.[7]
Los Angeles Dodgers
Harris signed a minor league contract with the Los Angeles Dodgers on November 18, 2013, that included an invitation to spring training.[26] He played in six games for the Triple-A Albuquerque Isotopes and had five hits in 15 at-bats (.333) with an RBI before he was released on April 12, 2014.[7]
Long Island Ducks
On May 16, 2014, Harris signed with the Long Island Ducks of the Atlantic League of Professional Baseball. He became a free agent following the season. In 111 games he hit .286/.394/.396 with 8 home runs, 53 RBIs and 1 stolen base.
Detroit Tigers
On March 17, 2015, Harris signed a minor league contract with the Detroit Tigers.[27] He was released on June 29, 2015.[28]
Post-playing career
In February 2016, Harris was hired by the Los Angeles Angels to join their player development department.[29] In May 2016, he enrolled in the MBA for Executives program at The Wharton School of the University of Pennsylvania. He resides in Tennessee.
In November 2019, Harris was hired by x10 Capital, a private equity firm based in San Francisco, CA.