Han startede sin seniorkarriere i sin fødeby Shrewsbury hos Shrewsbury Town. Han spillede 3 år i klubben (2003-2006) og skiftede derefter til storklubben Manchester City. Siden har han været lånt ud til forskellige lavere rangerende engelske klubber, først til Tranmere Rovers (her nåede han at spille 6 kampe) og derefter til Blackpool (her fik han spillet 5 kampe).
Hartvendte herefter retur til Manchester City, og fik en større og større rolle på holdet. Blandt andet var han med til slå FC Midtjylland ud af dette års Uefa Cup kvalifikation, med flere vigtige redninger i straffesparkskonkurrencen. I Februar2009, skrev Manchester City kontrakt med den stærke irske målmand Shay Given, og siden har Joe Hart været 2. valg på pladsen. Derfor valgte han igen i Juni 2009 at blive lejet ud. Denne gang til den nyoprykkede Premier League-klub, Birmingham City.
Efter sin tid i Birmingham, kom han tilbage til Manchester City, og da Shay Given blev skadet, blev Joe Hart førstemålmand. I år 2016 skiftede Joe Hart til Torino på en lejeaftale. I sommeren 2017 blev han igen lejet ud, denne gang til West Ham.
I 2018 skrev Joe Hart kontrakt med Burnley F.C.. Han skiftede i sommeren 2020 til Tottenham Hotspur F.C..