The US-based team said the 21-year-old had signed a “multi-year contract”. He will partner Russian Nikita Mazepin
German Schumacher said the move was “a dream come true, a dream I have been chasing since I was three years old”.
Ferrari, with whom he has a long-term contract, said the “eventual aim” was for him to drive for them in F1 “one day”.
Schumacher will be at Haas for at least the next two seasons.
Ferrari have signed Spaniard Carlos Sainz for 2021 and 2022 to partner Charles Leclerc, who has a contract with the Scuderia until 2024.
Haas team boss Gunther Steiner said Schumacher had “earned the opportunity” with his performances in Formula 2, in which he is leading the championship going into its final round in Bahrain this weekend.
“The prospect of being on the Formula 1 grid next year makes me incredibly happy,” said a “speechless” Schumacher.
German Schumacher thanked Haas and Ferrari for their “trust”, adding: “I also want to acknowledge and extend my love to my parents. I know that I owe them everything. I have always believed that I would realise my dream of Formula 1.
“A huge thank you must also go to all the great motorsport fans out there who have supported me throughout my career. I will give it my all, as I always do, and I look forward to going on this journey together with Haas F1 and them.”
Schumacher’s F1 debut next year will come on the 30th anniversary of his father’s own entry to the sport, at the 1991 Belgian Grand Prix.
Michael Schumacher had a glittering career which ended with him being the most successful driver of all time, with 91 wins and seven World Championships.
Britain’s Lewis Hamilton has this year surpassed Schumacher’s win record and equalled his tally of championships.
Michael’s medical condition is unknown following a skiing accident in 2013 in which he suffered severe head injuries. The 52-year-old has not been seen in public since.
His son’s career has been guided carefully by the family and Michael’s former manager, Sabine Kehm, to ease him through the motorsport ranks while keeping the inevitable public interest off his shoulders as much as possible.
But the attention on him has been intense since he came more into the public eye, starting with a demonstration drive in his father’s 1994 title-winning F1 car at the Belgian Grand Prix in 2017.
Schumacher said on Wednesday: “It’s quite clear I have been under the spotlight since a very young age due to the sport I do and love, and probably a bit more than usual.
“Nevertheless, it is something I am able to get used to. I am able to deal with it well, the results speak for it. I will do the same as usual and try to keep the same rhythm that I have.”
Schumacher has said in that past that comparisons with his father were “never a problem” for him, and described Michael as “my idol and very special”.
“It’s amazing to be racing the same sport,” Schumacher said. “It’s a sport we both love so much, so to be able to go a similar path and get to know the sport inside out is amazing.
“And to finally reach my goal – everybody’s goal is F1 – to be one of those 20 drivers is something incredible. I am just really a bit overwhelmed and happy to be confirmed and that I am going to be standing on the grid next year.”
Schumacher said he had chosen 47 as his race number in F1 because of “a funny mix of things”.
He said four was the number he carried when he won the European Formula 3 Championship in 2018, seven is a number that is “close to me”, partly because it is the number of championships his father won, and 47 is the number reached when you add up the birth dates of all the members of his family.
He won the European Formula 3 title in his second year in the category, made his F2 debut last season, winning a race at the Hungarian Grand Prix, and has won two races so far in a consistent 2020.
Schumacher is 14 points clear of Briton Callum Ilott with two races to go at this weekend’s round at the Sakhir Grand Prix in Bahrain.