The 24-year-old Poland international joined the Saints from Lech Poznan in the summer of 2017 and has made 85 appearances in total for the club.
Bednarek has featured in all 10 of sixth-placed Southampton’s Premier League games this season and scored his first goal of the campaign in the 3-2 loss against Manchester United last weekend.
"I think it's the next step in my development," Bednarek told the club's website. "I feel like this is the right place for me at the moment, and I can really enjoy my time here.
"I still see myself as a player who can improve a lot at this place, so there was only one decision for me to sign a new contract and help Southampton to become a better club."
Southampton manager Ralph Hasenhuttl added: "I am very happy that Jan has extended his contract," said Saints boss Ralph Hasenhuttl. "He's a Southampton player but he is also still young with a lot of potential, so it is good for us to strengthen our commitment with him.
"He is a good example of someone who has worked hard to establish himself with us and I think he can continue to improve here and be an important player for us in the future."
Bednarek joins the likes of captain James Ward-Prowse and Oriol Romeu in penning fresh terms at the Saint Mary’s stadium.