This article is more than
6 year oldThe two countries made final bid presentations before voting took place in Nyon, Switzerland.
The decision means Germany will stage the European Championship for the first time as a unified country, with West Germany having hosted the 1988 tournament.
Turkey is yet to host a major international football tournament.
It has seen previous attempts to host the Euros in 2008, 2012 and 2016 fail, as well as the 2020 Summer Olympics. Germany staged the 2006 World Cup.
Euro 2024 will return to a single-host format after Euro 2020 is held across Europe, including Germany.
Before announcing the winner, Uefa president Aleksander Ceferin said Germany and Turkey had made "very strong bids".
After announcing the winner, he added: "The procedure was transparent. The voting was democratic. Every democratic decision is the right decision so I can only say I am looking forward to seeing a fantastic Euro in 2024."
Euro 2024 will feature 24 teams, taking place in June and July, with 51 games scheduled for up to 32 days.
Berlin will stage the final, while matches will also take place in Cologne, Dortmund, Dusseldorf, Frankfurt, Gelsenkirchen, Hamburg, Leipzig, Munich and Stuttgart.
Former Germany captain Philipp Lahm, an ambassador for his country's bid, said: "We have amazing stadiums, fans who love football, first and foremost we have people who love celebrating with other Europeans.
"We will organise a huge football party in Germany."
Germany and Turkey were the only countries in the running for Euro 2024 and, in the build up, an evaluation report by Uefa stated Turkey's bid had risks.
The report added that Turkey's lack of an action plan in the area of human rights and limited hotel capacity in many cities were matters "of concern". It also labelled the scale of transport infrastructure work required "a risk".
However, it did say the Turkish bid was "in line with the long-term objectives of Uefa."
<p>The two leaders have discussed the Ukraine conflict, with the German chancellor calling on Moscow to hold peace talks with Kiev</p>