Singer Jai McDowall has won the TV show Britain's Got Talent - beating the 12-year-old favourite Ronan Parke.
The 24-year-old Scottish singer has won a £100,000 prize and a place at this year's Royal Variety Performance to perform in front of the Queen.
Jai McDowall said he felt "absolutely amazing, absolutely fantastic", after winning the public vote on Saturday.
Ronan, from Norwich, had been a favourite among the judges who praised his "perfect" performance.
Jai McDowall sang To Where You Are by Josh Groban.
"We said tonight there was going to be a shock result," judge Simon Cowell said, calling Jai "a worthy winner".
Ronan sang Kelly Clarkson's Because of You
Fellow judge Amanda Holden said: "I'm not disappointed. Of course I'm thrilled for Jai but I have to say that I really wanted Ronan to win."
Teen boy band New Bounce - Mitchell Zhangazha, 16, Kuan Fyre, 14, MJ Sanneh, 13, and James Anderson, 12 - came third in the competition, while Romanian dancer Razy Gogonea, 29, finished fourth.
The other finalists included singer Michael Collings, pianists Jean Martyn and Paul Gbegbaje, dancers James Hobley and Steven Hall and impersonator Les Gibson.