Both attackers are due to undergo medicals on Monday before completing their respective moves, with each expected to sign an initial four-year contract at his new club.
The agreement revives a deal for McNeil that appeared close to completion in February, when Crystal Palace had agreed a loan-to-buy arrangement that would have become a permanent £20m transfer this summer, only for the move to collapse after the necessary paperwork could not be completed in time - despite the 26-year-old having already passed a medical.
The breakdown prompted a pointed social media post from McNeil's partner, Megan Sharpley, criticising Palace's handling of the situation.
"We live in a world where everyone is aware of how big a problem mental health is," she wrote on Instagram at the time.
"So, in football, why do we find it acceptable because these young men are on a lot of money and that's OK to mess and toy with their mental health and that it's just part of the job?
"To have something promised to you, to have been dragged along on an emotional rollercoaster and to be toyed with until the final minute. For that to be torn away from you at the last second with absolutely no explanation has hurt more than I can say."
The deal has now been revived, with Johnson brought into the exchange to help balance the finances between the two clubs. The 25-year-old, capped 45 times by Wales, scored the winning goal for Tottenham in their Europa League final victory over Manchester United in May 2025, but endured a difficult half-season since joining Palace for £35m in January, failing to score in 26 appearances in all competitions, including 13 Premier League starts, despite helping the club win their first major trophy with victory over Rayo Vallecano in the Conference League final.
McNeil, who joined Everton from Burnley for £20m in July 2022, scored 15 times in 128 appearances for the Toffees, though his role had diminished this year under manager David Moyes with his contract now entering its final 12 months.
Everton finished 13th in the Premier League last season, with Palace two places below them, though the Eagles will play in the Europa League this season having won the Conference League. The two clubs are set to face each other at Hill Dickinson Stadium on the opening weekend of the season, Saturday 22 August.
