Ellis attended Paul Laurence Dunbar High School in Lexington, Kentucky, and was a baseball and basketball letterman as well as a sports news anchor for the school's TV production. In baseball, he was a two-time first team All-City selection. Ellis graduated in 1999. His brother is Josh Ellis.
Ellis earned All-Ohio Valley Conference first-team honors all four seasons while at Austin Peay University, only the fifth player in league history to accomplish that feat. He finished his college career with a .351 batting average, and ranks as Austin Peay's all-time leader with 263 hits.
Ellis was selected by the Dodgers in the 18th round of the 2003 MLB Draft. He has played in the minors with the South Georgia Waves, Vero Beach Dodgers, Double-A Jacksonville Suns, and Triple-A Las Vegas 51s. On September 5, 2008, his contract was purchased by the Dodgers, and he made his debut on September 15.
On September 26, 2008, Ellis made his first appearance in a major league game when he pinch ran for Nomar Garciaparra in the 9th inning in a game against the San Francisco Giants. He then scored his first major league run when he was part of a two-run home run by the Dodgers' every day catcher Russell Martin. In 4 games, Ellis scored 1 run after 3 plate appearances without a hit.
In 2009, Ellis began the season as the starting catcher for the AAA Albuquerque Isotopes under the tutelage of journeyman veteran Danny Ardoin. He spent most of the season with the Isotopes and was called up to the Dodgers in September. He recorded his first Major League hit and RBI with a single in the final game of the season, on October 4, 2009 against the Colorado Rockies. In 8 games, Ellis got one hit out of 10 at-bats with an RBI.
After starting the 2010 season in the Minors, Ellis was recalled back up to Los Angeles when teammate Brad Ausmus went on the disabled list. On June 6, Ellis had his first career walk off hit to beat the Braves 6-5 in the 11th. He appeared in 44 games with the Dodgers in 2010, hitting .278.
Ellis split the 2011 season between the Isotopes and the Dodgers. He was in 59 games for Albuquerque, hitting .304 and in 31 games for the Dodgers, hitting .271. On August 24, 2011, he hit his first career home run off Jaime García of the St. Louis Cardinals.
Ellis became the Dodgers regular starting catcher in 2012. He started the season strong, earning praise from Dodger manager Don Mattingly for his ability to work the count and for his high on-base percentage, as well as his solid defense. He wound up hitting .270 in 133 games for the Dodgers, with 13 home runs and 52 RBI while leading the team in walks with 65.
Ellis returned as the Dodgers starting catcher in 2013, hitting .238 with 10 home runs and 52 RBI. His solo homer on September 19 against the Arizona Diamondbacks was the run that clinched the National League West title for the Dodgers. He also received significant Gold Glove Award consideration for the catcher position (later won by Yadier Molina). He threw out over 50% of runners that tried to steal on him in the season.
On April 5, 2014, Ellis suffered a knee injury when sliding home. He underwent left knee surgery to debride the meniscus on April 7, 2014, a similar surgery he had during the 2012-13 off-season. Ellis was placed on the 15-day disabled list with a clause to miss 4–6 weeks. Ellis caught Clayton Kershaw's no-hitter on June 18, 2014. Ellis struggled with the bat, hitting only .191 in 93 games, with only 3 home runs and 25 RBIs.
Ellis and the Dodgers avoided salary arbitration on January 13, 2014, agreeing to a one-year, $4.25 million contract for the 2015 season. Ellis lost his starting job to newly acquired Yasmani Grandal and was relegated to backup duties for 2015. He played in 63 games and hit .238 with 7 homers and 21 RBI. Ellis singled in game one of the 2015 National League Division Series, extending his post-season hitting streak to 11 games, tying Carl Crawford for the franchise record. He singled again in game four (the next game he played) to pass Crawford for the franchise record. After the season, the Dodgers re-signed him to a one-year, $4.5 million, contract, buying out his final year of salary arbitration.
Ellis hit only .194 in 53 games with the Dodgers in 2016, with his playing time declining after Kershaw was placed on the disabled list at midseason.
Ellis was traded to the Philadelphia Phillies on August 25, 2016 (along with Tommy Bergjans and a player to be named later, who later turned out to be Joey Curletta) for Carlos Ruiz and cash.
On December 12, 2016, Ellis signed a one-year contract with the Miami Marlins.