Pereira initially played youth international football for his country of birth, Switzerland, before making more than 30 appearances for Portugal's youth national teams.
Pereira signed for Manchester United at the age of 16 in 2012.[5] He was part of the team that won the 2014–15 Under-21 Development League title, and extended his contract on 13 August 2015, amidst a goalkeeping saga at the club.[6]
On 4 June 2021, Manchester United announced a list with eight players whose contracts are set to expire, with one of them being Joel Pereira.[7]
2015–16: Loan to Rochdale
On 17 October 2015, he was loaned to Rochdale in Football League One for a month.[8] Later that day, he had his first senior call-up, remaining an unused substitute as the team drew 0–0 away to Bury. On 10 November 2015, he made his debut in a 1–0 loss to Morecambe at Spotland, in the quarter-finals of the Football League Trophy. Manager Keith Hill praised the goalkeeper's performance after he was named man of the match and saved a penalty kick.[9] On 19 November 2015, he extended his loan until 3 January 2016.[10] Two days later, Pereira made his Football League debut, in a 2–0 away win against Doncaster Rovers.[11] He totalled eight appearances for Rochdale, six in the league.[12]
On 25 February 2016, he had his first call-up to a senior Manchester United game, sitting on the bench for their 5–1 home win over FC Midtjylland in the last 32 second leg of the UEFA Europa League.[13]
2016–17: Loan to Belenenses and Premier League debut
On 1 July 2017, Pereira signed a four-year deal to stay at Manchester United until 2021.[19] On 20 September 2017, he appeared as a substitute against Burton Albion in the EFL Cup and conceded a last-minute goal.[20]
2018–19: Loans to Setúbal and Kortrijk
On 2 August 2018, he joined Vitória de Setúbal on loan for the 2018–19 season.[21] After making 10 appearances in all competitions, Pereira's loan spell was terminated in January 2019 and he returned to Manchester United.[22][23] At the end of January 2019, he went out on loan again, this time to Belgium with Kortrijk.[24] He made five appearances for the club in the Europa League playoffs.[25]
In February 2020, with Hearts at the bottom of the Premiership table, Pereira was criticised for a series of mistakes, including in a 5–0 defeat to Celtic. Hearts manager Daniel Stendel admitted he was considering replacing Pereira for their next match against Hamilton Academical.[29] Pereira made 25 appearances for Hearts.[30] He was so bad, the Hearts supporters gave him the nickname "Poppadom Hands".[31]
On 6 April 2021, Pereira was in goal as Norwich City thrashed Huddersfield 7–0. He was a last-minute replacement for Ryan Schofield, who was unwell.[33]
RKC Waalwijk
On 5 July 2021, Pereira was confirmed as a new signing at the Mandemakers Stadion on a one-year deal with Eredivisie side RKC Waalwijk, with the option to extend for another year.[34]
Reading
On 9 September 2023, he joined EFL League One club Reading on a one-year deal.[35]
On 8 May 2024, Reading activated a one-year extension to Pereira's contract, keeping him at the club until the summer of 2025.[36]
International career
Pereira is eligible to represent Switzerland or Portugal at international level.[4] In 2011, he made two appearances for the Switzerland under-15s (against Belgium and Turkey).[37] He was promoted to the under-16s in September 2011, making his debut in a 6–2 win over Italy on 6 September, the first of five appearances in total for the under-16 team.[38] Shortly after joining Manchester United in August 2012, he was invited to play for Portugal instead.[4] He made 35 appearances for Portugal from under-17 to under-21 level.[39]