Chris Wesley opened the scoring in the 18th minute following a penalty corner before Florian Fuchs banged in the second goal three minutes before the final whistle.
Some 7,000 Indian fans at the Kalinga stadium cheered wildly as the young Germans, with seven junior World Cup winners from 2013 in their side, won back the Champions title they took in 2007.
Pakistan had two players banned for the final and one reprimanded by the International Hockey Federation for making obscene gestures at the crowd after the 4-3 win over hosts India in Saturday’s semi-final.
But the South Asians, looking for their first major world title since 1994, kept the rampaging Germans at bay for a major part of the 60-minute match played under floodlights.
The closest Pakistan came to scoring was early in the fourth quarter when a loose ball from the left caught the Germans on the wrong foot, but Muhammad Bhutta was unable to slot the ball in.
Pakistan had failed to qualify for the World Cup in June that was won by Australia and were also unable to book a direct entry to the 2016 Olympics after losing to India in the Asian Games final in South Korea in October.
With the cash-strapped Pakistan Hockey Federation unable to generate funds to fly in the team to Bhubaneswar, it needed the generosity of a businessman at home to sponsor the trip.
Finishing third were Australia, who came into the tournament as five-time defending champions. They defeated India 2-1 for the bronze medal.
“I am pleased, but not satisfied,” Australian coach Graham Reid said.
“We played tighter and better as the tournament progressed. Considering this was a learning curve, we’ve achieved a lot.
“But obviously we missed not being in the final,” he added.
The Kookaburras were without veterans Liam de Young and Rob Hammond, who retired after the World Cup in June, and five-time world player of the year Jamie Dwyer and Mark Knowles, who were both injured.
In the day’s other matches, the Netherlands took fifth place after beating Argentina 4-1 and England nudged ahead of Belgium 3-2 to finish seventh.