The 27-year-old Ivory Coast international has played exactly 100 times for United since a £30m move from Villarreal in 2016.
He has suffered frequent injury problems during his time in England.
“I’m very happy. This decision is something I didn’t have to think about – I love this club and I love playing for Manchester United,” he said.
“Now the moment with my injury has passed and I’m fit and feel good, and that’s it. A new contract is like a new challenge and I’m ready for this.”
Bailly’s new contract contains the option for an extra year.