The 19-year-old, a Switzerland Under-20 international, joined City in 2008 from Lausanne Sport and will initially join up with United's reserve side.
Veseli told www.manutd.com: "I am very happy and it is an honour to sign for Manchester United. I can't wait to get started, to work hard and do everything I can to help the team. I am looking forward to showing everybody what I can do on the pitch.
"I am very thankful to Sir Alex Ferguson for bringing me to such a great club. Manchester United has a long history of younger players coming through and hopefully I can follow and do the same."
Veseli did not make a first-team appearance for City but was part of the squad for last summer's pre-season tour of North America, while he captained his country to victory in the Under-17s World Cup in 2009.