Lech Poznań On 23 September 2013, at the age of 17 years old, Bednarek made his
Ekstraklasa debut for
Lech Poznań in a 0–2 away win against
Piast Gliwice. The
Polish under-21 international became an integral member of the squad, featuring 31 times and scoring once as Lech narrowly missed out on the
2016–17 Polish Cup to
Arka Gdynia 2–1 after
extra time.
Górnik Łęczna (loan) He was loaned to
Górnik Łęczna for the
2015–16 season, where he managed a total of 17 league appearances before returning to his parent club.
Southampton 2017–18 season On 1 July 2017, Bednarek joined
Southampton on a five-year deal, for a reported fee of £5 million. On 23 August 2017, he made his debut for Southampton against
Wolverhampton Wanderers in the
EFL Cup which ended in a 2–0 defeat. Bednarek did not feature again until 8 January 2018 in a
FA Cup match against Fulham which ended in a 1–0 victory before being substituted for
Maya Yoshida in the second half. Bednarek played out of position at right-back during the game, but was able to help keep a clean sheet.
Virgil van Dijk left in January, and
Mauricio Pellegrino was replaced by
Mark Hughes who switched to a back three in April. Bednarek ended the season with five league appearances and eight in all competitions. On 22 September 2018, he made his first Premier League appearance of the season against
Liverpool which ended in a 3–0 defeat after replacing
Oriol Romeu in the second half. On 3 December 2018, Mark Hughes was sacked by Southampton. Under Hughes, Bednarek only made two league appearances so far that season. On 25 October 2019, Bednarek featured in Southampton's
0–9 defeat to
Leicester City. On 28 January 2020, he scored his first and only goal of the season in a 3–2 defeat to Wolves. Following Southampton's 1–0 defeat against
Newcastle United on 7 March 2020, English football was
suspended due to the
COVID-19 pandemic. Southampton and Bednarek would not play again until 19 June 2020 against
Norwich City which ended in a 3–0 victory. He ended the season with 39 appearances in all competitions. On 6 November 2020, he featured in Southampton's 2–0 win over Newcastle which saw
the Saints go top of the English top flight for the first time since 1988. His only goal of the season came during a 3–2 defeat to
Manchester United on 29 November 2020. On 3 December 2020, Bednarek signed a new four-and-a-half-year contract. On 2 February 2021, Bednarek scored an
own goal, conceded a
penalty and was given a
red card after a foul on
Anthony Martial in his team's record-equalling
9–0 defeat to Manchester United after
Mike Dean checked the pitchside monitor. Despite this, the red card was controversial and Manchester United manager
Ole Gunnar Solskjær believed that Bednarek should not have been sent off. The red card issued was subsequently rescinded following an appeal by the club. He ended the season with 41 appearances in all competitions. Three days later, Bednarek made his first start of the season in an 8–0 victory in the EFL Cup against
Newport County, which is Southampton's biggest away win in their history. On 18 September 2021, after not starting the opening four games, he made his first league start of the season in a 0–0 draw with
Manchester City. In that game, Southampton defender
Jack Stephens had played every minute in all competitions up until he suffered a knee injury. Following the injury to Stephens, Bednarek returned to being a regular starter. On 26 December 2021, Bednarek scored his second goal in three games after he netted the winner in Southampton's 2–3 victory against
West Ham. On 11 January 2022, he scored again in Southampton's 4–1 victory against
Brentford. On 16 April 2022, Bednarek's final goal of the season came in a 1–0 victory against
Arsenal, which took his total goals for the season to four and he ended the season with 34 appearances in all competitions. On 1 September 2022, Bednarek joined
Aston Villa on a season-long loan. Bednarek made his debut for Aston Villa on 2 October 2022 in a 0–0 draw with
Leeds United, replacing the injured
Ludwig Augustinsson before half-time. The loan was ended early on 23 January 2023 as Bednarek was recalled to Southampton after making only four appearances in all competitions for Aston Villa. He made 23 appearances in all competitions throughout the season for Southampton, but the club were relegated to the
EFL Championship.
2023–24 season He made his first appearance of the season on 4 August 2023 in a 2–1 away victory against
Sheffield Wednesday. On 12 August 2023, Bednarek scored his first goal of the season in a 4–4 draw with Norwich City. Following his fifth
yellow card of the campaign during a 1–0 away victory against
Millwall, he was suspended for one game. He ended the season with 47 appearances in all competitions. He scored his first goal of the season on 19 January 2025 in a 3–2 defeat against
Nottingham Forest. On 8 March 2025, Bednarek was substituted within 20 minutes during a 3–1 defeat against Liverpool due to a clash of heads with
Ryan Manning. Despite this, manager
Ivan Jurić expected him to be available for the next game against Wolverhampton Wanderers. However, he was subsequently ruled out of the match. Bednarek ended the season with 34 appearances in all competitions. The Portuguese side paid a €7.5 million transfer fee, with his release clause being set at €60 million. Bednarek began the
2025–26 season as a starter, making his debut on 11 August in a 3–0 league victory over
Vitória de Guimarães at the
Estádio do Dragão. On 25 September, he made his debut in European competitions, starting in a 1–0 away win against
Red Bull Salzburg in the
league phase of the
UEFA Europa League. On 18 October, Bednarek scored his first goal for Porto, netting the opener in a 4–0 win over Celoricense in the 3rd round of the
Taça de Portugal. On 14 January 2026, in the
quarter-finals of that same competition, Bednarek scored the only goal of the match in a 1–0 home victory over
rivals Benfica. Later that year, on 2 May, he scored the only goal in a 1–0 victory over
Alverca, securing his club's
Primeira Liga title. ==International career==