Pereira initially played youth international football for his country of birth, Switzerland, before making more than 30 appearances for Portugal's youth national teams.
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.[8]
2015–16: Loan to Rochdale
On 17 October 2015, he was loaned to Rochdale in Football League One for a month.[9] 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.[10] On 19 November 2015, he extended his loan until 3 January 2016.[11] Two days later, Pereira made his Football League debut, in a 2–0 away win against Doncaster Rovers.[12] He totalled eight appearances for Rochdale, six in the league.[13]
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.[14]
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.[20] On 20 September 2017, he appeared as a substitute against Burton Albion in the EFL Cup and conceded a last-minute goal.[21]
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.[22] After making 10 appearances in all competitions, Pereira's loan spell was terminated in January 2019 and he returned to Manchester United.[23][24] At the end of January 2019, he went out on loan again, this time to Belgium with Kortrijk.[25] He made five appearances for the club in the Europa League playoffs.[26]
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.[30] Pereira made 25 appearances for Hearts.[31] He was so bad, the Hearts supporters gave him the nickname "Poppadom Hands".[32]
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.[34]
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.[35] However, he only managed to make four appearances for the club.[36]
Reading
On 9 September 2023, he joined EFL League One club Reading on a one-year deal.[37]
On 8 May 2024, Reading activated a one-year extension to Pereira's contract, keeping him at the club until the summer of 2025.[38]
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).[39] 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.[40] 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.[41]