Joe began his career with Middlesbrough, joining the club’s youth setup in 2001. The left-back made his first team début in 2009 against West Ham United, before going on to become a regular during Boro’s subsequent spell in the Championship.
After making almost a hundred appearances for the Teessiders, Bennett joined Aston Villa in 2012, playing twenty-five times over the course of the 2012/13 Premier League season. He has competed at the top end of the Championship during several loan spells (Brighton & Hove Albion in 2014, AFC Bournemouth in 2015 and Sheffield Wednesday in 2016) and joined Cardiff City on a free transfer in August 2016, scoring three times in twenty-five '16/17 Legaue and Cup appearances.
Joe has represented England at U19, U20, and U21 level, and featured in the Final of the U19 European Championships in 2009.
In June 2018, Joe extended his City deal until the summer of 2021.