Harris began his professional career in 2001 with the Lansing Lugnuts of the Midwest League and hit .274 in 32 games. In 2002, with the Daytona Cubs, he hit .329 in 110 games, including 13 homers and 54 RBI. He was selected as a Florida State League All-Star and also a High-A All-Star, leading to a promotion to the AA West Tennessee Diamond Jaxx at the end of the season. In 2003, he played in 120 games with the Diamond Jaxx and hit .280.
He began 2004 with the Iowa Cubs in the AAA Pacific Coast League and hit .311 in 69 games, leading to his first Major League call-up with the Cubs.
Harris made his major-league debut on July 6, 2004, as the starting third baseman against the Milwaukee Brewers. His first Major League hit was an RBI double off Víctor Santos in the third inning. In three games with the Cubs, he had two hits in nine at-bats.
The Expos moved to Washington, D. C. in 2005 and became the Washington Nationals. Harris spent most of 2005 and 2006 with the new AAA affiliate, the New Orleans Zephyrs, where he hit .270 in 127 games in 2005 and .283 in 59 games in 2006. With the Nationals, he only appeared in 4 games in 2005 (3 for 9 with 1 homer) and 17 games in 2006 (8 for 32).
On November 15, 2012, Harris signed a Minor League contract with an invitation to Spring Training with the Los Angeles Angels of Anaheim. He made the Angels opening day roster as a utility player, but hit only .206 in 44 games for he Angels. They designated Harris for assignment on July 20, 2013 and he elected free agency three days later.
Harris signed a minor league contract with the Los Angeles Dodgers on November 18, 2013, that included an invitation to spring training. He played in six games for the AAA Albuquerque Isotopes and had five hits in 15 at-bats before he was released on April 12, 2014.