Marshall led Bishop O'Connell to the 2010 Virginia Independent Schools Division I championship as a senior. He also led Bishop O'Connell to the semifinals of the Washington Catholic Athletic Conference. He averaged 15.3 points, nine rebounds and six assists as a senior.

Considered a four-star recruit by ESPN.com, Marshall was listed as the No. 7 point guard and the No. 22 player in the nation in 2010.[1]

At the start of his first season at North Carolina, Marshall provided more depth at the point guard position to relieve starting point guard Larry Drew II, as he got more used to the system at North Carolina. However, after a disappointing showing at Georgia Tech in which the Tar Heels lost by twenty points, Roy Williams took the gamble and inserted Marshall into the starting lineup at a win versus Clemson. Soon Drew transferred to UCLA, allowing Marshall to take on the leadership role with poise; as he dished out sixteen assists to three turnovers at a win over Florida State on February 6.

Marshall had an excellent sophomore season in which he set the all time UNC assist record of 351,surpassing former UNC point guard Ed Cota as the all-time leader in assists in a single season in school history. On March 9, 2012, Marshall set another record, the all-time ACC record in assists in a single season with 311, surpassing the previous record set by former Georgia Tech point guard Craig Neal.[2]

Marshall fractured his wrist during North Carolina's NCAA tournament win against Creighton University, landing hard after being fouled while driving for a layup.[3] He did not return for the remainder of the season, as Carolina fell to Kansas in the regional finals. Marshall won the 2012 Bob Cousy award, joining past winners Raymond Felton (2005) and Ty Lawson (2009) as Tar Heels who have won the award.[4]

On July 16, 2012, Marshall signed a multi-year deal with the Phoenix Suns.[6] He joined the Suns for the 2012 NBA Summer League and in his first game, he had five assists and three steals.[7] In his final Summer League game, Marshall had a double-double with 15 points and 10 assists in a 96-87 victory over the Memphis Grizzlies.[8]

On November 4, 2012, Marshall made his first official NBA appearance against the Orlando Magic. He did not record any statistics in that game. He had two assists and one steal in a blowout loss to the defending NBA Finals champion Miami Heat a day later. On November 29, 2012, the Suns assigned Marshall to the Bakersfield Jam of the NBA D-League.[9] In his first game in the D-League, Marshall recorded 21 points, 8 assists and 2 rebounds in a 102-95 victory over the Santa Cruz Warriors. Marshall was recalled by the Suns on December 21, 2012.[10]

On February 5, 2013, Marshall recorded a season-high 11 points with 4 assists in a 96-90 victory against the Memphis Grizzlies. On March 9, 2013, Marshall had 9 points, 2 rebounds, and 4 assists in a 107-105 victory over the Houston Rockets. Marshall's first official start in the NBA came on March 27, 2013 against the Utah Jazz. He had 13 assists in that game, his first game to record double-digit assists. In three starts, he totaled 37 assists.[11]

On December 3, 2013, Marshall was acquired by the Delaware 87ers of the NBA D-League.[14] In his debut with Delaware, Marshall recorded 31 points, 10 assists, 9 rebounds, and 2 steals in a 126-139 loss to the Rio Grande Valley Vipers.[15]

On December 20, 2013, Marshall signed with the Los Angeles Lakers.[16] The injury-ravaged Lakers on January 3, 2014, made Marshall their sixth different player to start at point guard in 2013–14, when he established career highs with 20 points and 15 assists in a 110–99 victory over Utah that snapped a six-game losing streak.[17] It was his fourth career start.[11] In his next game, he recorded a career high 17 assists in a loss to the Denver Nuggets.

On July 20, 2014, Marshall was claimed off waivers by the Milwaukee Bucks.[19] On January 17, 2015, he was ruled out for the rest of the 2014–15 season after suffering a torn anterior cruciate ligament (ACL) in his right knee on January 15.[20]

On February 19, 2015, Marshall was traded back to the Phoenix Suns in a three-team deal that also involved the Philadelphia 76ers.[21] He was subsequently waived by the Suns two days later alongside John Salmons.[22]

On September 9, 2015, Marshall signed with the Philadelphia 76ers.[23] On November 11, he was assigned to the Delaware 87ers in order to rehab his torn ACL.[24] On December 4, he was recalled by the 76ers.[25] He made his debut for the 76ers on December 11, recording 5 points and 6 assists as a starter in a loss to the Detroit Pistons.[26]

On August 26, 2016, Marshall was traded to the Utah Jazz in exchange for Tibor Pleiß, two 2017 second-round draft picks and cash considerations.[27] He was immediately waived by the Jazz upon being acquired.[28]

On September 21, 2017, Marshall signed a training camp contract with the Milwaukee Bucks.[30] He was waived by the Bucks on October 8, 2017 after appearing in three preseason games.[31] Marshall signed with the Agua Caliente Clippers of the NBA G League. After appearing in three games, Marshall opted to retire from basketball on November 23, 2017.[32]