Latifi, who is currently a Williams reserve driver, has been the prime candidate for the role ever since Kubica announced he would not be continuing in 2020 earlier this year. The 24-year-old has taken part in six first practice sessions this season and is currently second in the F2 championship with one race weekend in Abu Dhabi remaining.
Latifi will race alongside George Russell next year, who joined Williams at the start of 2019 but remains on loan from Mercedes.
"I am delighted to announce that Nicholas will be stepping up to the role of race driver to partner George in 2020," Williams deputy team principal Claire Williams said. "All of us at Williams have been immensely impressed at what he has achieved this year in FIA Formula 2, along with his commitment to the team, and the work that he has put in behind the scenes.
"Nicholas has become an established and well-respected member of Williams, and we look forward to him stepping up into this new role, as we look to fight our way back to the midfield."
Williams has endured the worst season in its history this year after it failed to get its car ready for the opening pre-season test and was forced to play catch up for the rest of the season. The team has regularly qualified multiple seconds off the pace and has only scored one point all season when Kubica snatched a tenth place finish in Germany once both Alfa Romeos were penalised over a technical infringement.
Latifi has received substantial financial backing from his family throughout his career and his father, Michael, owns 10 percent of McLaren's holding company.
"I am thrilled to be stepping up as race driver for 2020," he said. "I have thoroughly enjoyed working with the team this year, supporting them with the development of the car, and assisting wherever I can trackside and at the factory.
"I look forward to the journey ahead with the team, and I am excited to make my Formula One debut at the Australian Grand Prix in 2020."
The announcement means all 20 places on next year's grid are confirmed.