Zaha, 20, will sign a five-and-a-half year contract worth around £35,000-a-week in wages which will significantly rise over the period of time.
"I am delighted to be joining Manchester United and ending the recent speculation. I would like to thank the owners at Palace for making the move possible, however my focus for the next five months will be solely at Crystal Palace," Zaha said.
United are willing to send Zaha back to Selhurst Park on loan until the end of the season to help Palace gain promotion to the Premier League. The 20-year-old England winger will join United's squad for their pre-season tour in July.
"I have been at Palace for more than 10 years, I will always love the club and I want to help get them get back to the Premier League, particularly for the fans who have always been so good to me," Zaha, who came through the ranks at Crystal Palace, said.
Out of the £15 million deal, £10m will be paid to Palace while the rest of the amount will be paid depending on performance-related add-ons and appearances for England.
Palace chiefs were reluctant to sell Zaha but the players rise over the years couldn't prevent him from leaving the club and join Premier League giants Manchester United. Arsenal were also interested to sign Zaha but the Gunners backed out due to his high valuation.
The youngster made 124 appearances for Palace and has scored 15 goals for the London club. Zaha made his England debut in the 4-2 defeat against Sweden.
Zaha's signing could end winger Nani's time at Old Trafford. The Portuguese refused to sign a contract extension with the Red Devils while Sir Alex Ferguson would look at offers for the 26-year-old.
Nani's position has already been occupied by wingers Antonio Valencia and Ashley Young.
Arsenal and Juventus have shown interest to sign the Portugal international while Zenit St Petersburg have had a bid rejected during the summer transfer window.