Willis was born in Coventry, West Midlands.[5] He made his first-team debut for Coventry City as a substitute on 5 November 2011 in a 4–2 Championship loss to Southampton, coming on to replace James McPake after 64 minutes.[6] At the age of 17 years and 72 days he became the tenth youngest Coventry City player of all-time.[citation needed] He made his first start of the following season on 28 August 2012, in a 3–2 win against Birmingham City in the League Cup.[7]
He established himself in the first-team towards the end of the 2013–14 season in the right-back position.[citation needed] A change in formation to a three-man defence saw Willis become a first-choice player for Coventry City at the start of the following season.[citation needed] On 11 October, Jordan Willis captained the Sky Blues for the first time in their game against Crewe Alexandra.[citation needed]
He scored his first goal for Coventry in an EFL Trophy tie against West Ham Under-23s on 30 August 2016.[8] He then scored his first league goal for the club in a 2–0 win against Chesterfield on 1 November 2016.[9]
Willis left Coventry at the end of 2018–19 season after rejecting the offer of a new contract.[10]
Sunderland
Willis signed for League One club Sunderland on 13 July 2019 on a two-year contract.[11] Willis scored his first goal for Sunderland on 17 August 2019, a header from a Grant Leadbitter corner, in a 2–1 home victory against Portsmouth.[12] Sunderland announced on 25 May 2022, that he will be released when his contract runs out on 30 June 2022.[13]
Wycombe Wanderers
Willis signed for Wycombe on 11 February 2023, until the end of the season.[14]
Northampton Town
After over five months without a club,[15] on 7 October 2023 Willis signed for Northampton Town on a short-term contract lasting initially until January 2024.[16] In December he agreed a contract extension with Northampton Town until the end of the season.[17]