The Wales international has penned a four-and-a-half-year deal and will be available to play in Palace's Premier League fixture against Newcastle on Sunday.
"I'm really excited, and I'm really happy," Johnson, 24, told the club's website. "Crystal Palace are such a great club, one that I've always admired.
"It's a great time for me to be here and join the journey that this club is on – I'm super excited."
Johnson joined Spurs in 2023 for £47.5 million from Nottingham Forest and finished last season as the club's top scorer with 18 goals.
He scored the winner in the Europa League final against Manchester United in May last year, which ended Spurs' 17-year wait for a trophy.
Despite that success, Johnson saw limited action under Thomas Frank this season, making just six Premier League starts to date.
At the international level, Johnson has 42 senior caps for Wales, scoring seven goals.
