McEachin was first elected to the House of Delegates from the 74th district in 1995. After three terms there, he ran for Attorney General of Virginia in 2001. He won a four-way Democratic primary with 33.6% of the vote, but lost the general election to Republican nominee Jerry Kilgore by 20 percentage points. In 2005 he ran again for the 74th House district, defeating his predecessor, Floyd Miles, by 44 votes in the Democratic primary, and winning the general election with 75% of the vote. In 2007, McEachin ran for the state Senate, challenging 9th District incumbent Benjamin Lambert, who drew criticism within the Democratic Party for his endorsement of Republican United StatesSenator George Allen in Allen's unsuccessful 2006 reelection campaign against Jim Webb. After defeating Lambert 58%-42% in the primary, McEachin won 81% of the vote against independent Silver Persinger in the general election. He held the seat once held by future Governor L. Douglas Wilder. He was unopposed for reelection in 2011. Midway through his third term in the state senate, McEachin got an opportunity to transfer to federal politics. A federal court threw out Virginia's original congressional map as an unconstitutional racial gerrymander. A new map saw all of Petersburg and most of the majority-black precincts in Henrico County shifted from the 3rd District to the 4th District. The 4th also picked up all of Richmond, which had previously been split between the 3rd and 7th Districts. The 4th had been represented by Republican Randy Forbes since a 2001 special election, but the addition of these majority-black areas turned the 4th from a Republican-leaning swing district into a heavily Democratic district. Rather than face certain defeat in the redrawn 4th, Forbes made an unsuccessful bid for the Republican nomination in the neighboring 2nd District. McEachin, whose then-home in unincorporated Henrico County lay just outside the redrawn 4th's boundaries, defeated Chesapeake City Councilwoman Ella Ward for the Democratic nomination. He then handily defeated Republican Henrico County Sheriff Mike Wade in the general election for the 4th District. In December 2019, McEachin received national media attention after suggesting Virginia GovernorRalph Northam use the Virginia National Guard to enforce gun control laws in the state. McEachin is a member of the Congressional Black Caucus.
As of 2019, his wife Colette was interim Commonwealth's Attorney for Richmond and won the Democratic nomination on August 10, 2019 to run for the office in a special election to be held in November 2019 to fill the unexpired current term, which ends in 2021. They have three children. Since 2017, the McEachins live in Richmond. On August 25, 2015, Senator McEachin's name was found on the list of users of the Ashley Madison website. McEachin's response to the revelation was "At this time, this is a personal issue between my family and me. I will have no further statement on this issue.” In 2018, McEachin revealed that he had developed a fistula after completing treatment for rectal cancer in 2014, losing more than 60 pounds as a result. McEachin stated that he expected to fully recover from the condition.