Fells attended Fullerton Union High School in Fullerton, California, where he played basketball. He was selected to the All-CIF Southern Section II-A second team as a junior while averaging 17 points and 10 rebounds as the team's center. He was named All-Freeway League second team also in his junior season.
Professional basketball career
Between 2008 and 2012, Fells played basketball professionally in Argentina, Mexico, Belgium, Finland, and France. As a rookie on the Basketball League Belgium Division I team Leuven Bears in 2008–09, Fells wore jersey #14 and averaged 9.3 points, 4.9 rebounds, and 1.5 assists in 33 games. In his second season with the team in 2009–10, Fells averaged 8.1 points and 4.7 rebounds. In the 2010–11 season, Fells played for Kataja Basket Club of the Finnish Korisliiga, wearing jersey #7. In 55 games, Fells averaged 13.8 points and 8.3 rebounds. Kataja were runners-up of the 2011 Korisliiga Finals. A Étendard de Brest of French LNB Pro B, Fells played 25 games for Soles de Mexicali of the Mexican Liga Nacional de Baloncesto Profesional in the 2011–12 season and wore jersey #12. He averaged 13.5 points and 7.5 rebounds. After the LNBP season ended, Fells played nine games for Obras Sanitarias of the Argentine Liga Nacional de Basquet from March to April 2012 and averaged 6.9 points and 4.7 rebounds. Like at Soles de Mexicali, Fells wore jersey #12 for Obras. In December 2012, Fells signed with Libertad de Sunchales but did not play any games.
On March 6, 2013, Fells was signed by the Seattle Seahawks. On May 18, 2013, he was waived by the team. On May 20, 2013, he was re-signed with the team. On August 31, 2013, Fells was released by the team.
Arizona Cardinals
On October 9, 2013, Fells signed with the Arizona Cardinals practice squad. On January 1, 2014, he was re-signed to a reserve/future contract with the Arizona Cardinals.
2014 season
Fells entered Cardinals' training camp competing with John Carlson, Troy Niklas, and Jake Ballard to be a backup tight end. He was named the fifth tight end on the Cardinals' depth chart to begin the regular season, behind Rob Housler, John Carlson, Troy Niklas, and Jake Ballard. During Week 3, he made his first NFL start as the Cardinals defeated the San Francisco 49ers by a score of 23–14. On December 11, 2014, Fells made his first NFL reception on a six-yard pass from Carson Palmer during a 12–6 victory over the St. Louis Rams. During the regular-season finale, he caught a 24-yard pass for his longest catch of the season and finished the 17–20 loss to the 49ers with two receptions for 39 receiving yards. Fells completed his rookie season with five receptions for 59 yards while playing ten games and starting in five. On January 3, 2015, Fells appeared in his first NFL postseason game after the Cardinals finished the season with an 11–5 record. In the 16–27 NFC Wildcard loss to the Carolina Panthers, he caught a one-yard touchdown.
2015 season
Fells started the 2015 season as the second tight end behind Jermaine Gresham. During the Arizona Cardinals' home opener against the New Orleans Saints, he caught his first NFL touchdown on a 17-yard pass from Carson Palmer. He finished the 31-19 victory with four receptions for 82 yards and a touchdown. On October 18, 2015, he left a 25-13 loss to the Pittsburgh Steelers after suffering a shoulder sprain that would keep him out the next two games. Fells finished the 2015 season with a career-high 21 receptions for 311 yards and three touchdowns in 14 games and 12 starts. In the postseason, Fells caught four receptions for 50 yards and a touchdown.
2016 season
Fells remained the Cardinals' second tight end behind Gresham in 2016. During Week 2 against the Tampa Bay Buccaneers, he caught a career-high four passes for 31 yards in a 40-7 victory. On January 1, 2017, he caught a 37-yard touchdown from Carson Palmer as the Cardinals defeated the Los Angeles Rams by a score44-7. Fells finished the 2016 season with 14 receptions for 154 yards and a touchdown in 14 games and seven starts.
Detroit Lions
On March 11, 2017, Fells signed a one-year, $1.5 million contract with the Detroit Lions. Fells entered training camp competing with Cole Wick, Khari Lee, and Michael Roberts to be the backup tight end. He was named the backup behind Eric Ebron to begin the regular season. Ebron struggled with drops in the first half of the season, and Fells saw increased snaps and eventually started in place of him. Fells finished the 2017 season with 17 receptions for 177 yards and three touchdowns in 16 games and 13 starts.
Cleveland Browns
On March 15, 2018, Fells signed a three-year contract with the Cleveland Browns. He played in 16 games with 11 starts, recording 11 receptions for 117 yards and three touchdowns. On March 11, 2019, Fells was released by the Browns.
Houston Texans
On March 18, 2019, Fells signed a one-year contract with the Houston Texans. In Week 13 against the New England Patriots, Fells set the single-season record for most touchdown receptions by a tight end in Texans' history, a record previously held by Owen Daniels and Joel Dreessen. Fells finished the regular season with 34 receptions for 341 yards and seven touchdowns, all career bests. On March 10, 2020, Fells was re-signed to a two-year, $7 million contract by the Texans.