The striker leaves boyhood club Arsenal for around £25m plus a further £5m in add-ons.
Nketiah had looked set for a move to Nottingham Forest but a deal collapsed. Bournemouth and Marseille had registered an interest earlier in the window, though nothing came to fruition.
The 25-year-old made his first-team debut in 2017 and went on to score 38 times in 168 appearances for his boyhood club, winning the FA Cup in 2020 as well as lifting two Community Shields with Arsenal.
Hale End graduate Nketiah slipped down the pecking order at Arsenal last season and had not started a competitive game since New Year’s Eve. Kai Havertz and Gabriel Jesus have been preferred up front.
It had been accepted the forward needed to leave to further his career and a move to Palace offers him the chance of further proving himself in the Premier League.
Nketiah said: “It’s amazing to sign for Crystal Palace – I’m excited to get going. Every time I come back to South London, it always puts a smile on my face, so it’s good to be back home.”
Palace chairman Steve Parish added: “It’s brilliant to welcome Eddie, a senior England international, back to South London – we are delighted he has signed for Crystal Palace. I am confident that his energy, talent and hunger to succeed will endear him to his new teammates and supporters alike.”