Leon Goretzka has passed a medical and agreed a deal to sign for Bayern Munich at the end of the season, Schalke sporting director Christian Heidel has confirmed.
Goretzka was out of contract at Schalke at the end of the season and, while the club tried to keep him in Gelsenkirchen, it was always likely he would move on.
Bayern declared their desire to take the 22-year-old to Bavaria last week, the Bundesliga champions' executive board chairman Karl-Heinz Rummenigge stating they would be "crazy" if they did not consider signing a free agent Germany international.
And the lure of playing at the Allianz Arena has proved key, despite reported interest from the likes of Liverpool, Arsenal and Juventus.
Speaking ahead of Sunday's game with Hannover, Heidel told reporters: "Leon Goretzka has earlier this week informed us that he would like to leave the club and join Bayern Munich.
"We noted that with regret. Karl-Heinz Rummenigge has told us that Leon has passed his medical. We are losing a very good player.
"He has signed a contract from July 1, 2018 with Bayern. We did everything possible to keep Leon."
Losing Goretzka is a blow to Schalke but Heidel insists they were "prepared".
He added: "Last summer there was no agreement with him and his agent. He wanted more time to see the sporting development.
"We can deal with this situation, it was not a total surprise. We are prepared."
Schalke coach Domenico Tedesco described Goretzka as a "fundamental part of the squad" but urged fans to support the midfielder over the remaining months of his contract, starting at the weekend.
He said: "We are sad and disappointed that we lose Leon as a player and as a human. But we have to accept this decision. There is no question that Leon is a fundamental part of this squad.
"We hope the fans don't react negatively on Sunday. Our fans have always supported the team and Leon is a part of that team for the rest of the season.
"Leon is a professional and he will continue to give everything for Schalke. He remains a vital player for us."
Schalke go into the 19th round of fixtures in third place in the Bundesliga, a point behind RB Leipzig, with automatic qualification to next season's Champions League a clear target.