Gyan's spot kick five minutes from time, awarded after Serbia substitute Zdravko Kuzmanovic's ridiculous handball, settled another cautious contest that condemned the Europeans to their fifth successive defeat at the tournament.
Another miserable experience at the tournament for Serbia had already looked ominous when defender Aleksandar Lukovic was needlessly dismissed in the 74th minute for two bookable offences.
And though the Europeans nearly took the lead soon after through Milos Krasic, Gyan's penalty was enough to hand Serbian coach Milovan Rajevac a victory over his own country.
For Serbia coach Raddy Antic it was the equivalent of an afternoon in the dentist's chair, as his players underachieved and now face a tough task to qualify for the second round.
Serbia hammered in more goals than any country in Europe as they coasted to qualification, finishing ahead of France. And they showed why, with striker Marko Pantelic firing Ghana an early warning by blasting wide after just 12 seconds.
But the Black Stars refused to be overawed by their experienced opponents and Kwadwo Asamoah's fierce cross-cum-shot was nearly turned into his own net by Nikola Zigic.
Ghana should have broken the deadlock nine minutes into the second period when the impressive Prince Tagoe found Dede Ayew with a delicious cross but he wastefully headed wide.
The giant Zigic should have done better soon after when he couldn't get anything on Pantelic's inch perfect cross from the left.
Nobody came closer than Asamoah Gyan, though, with the Ghana striker hitting the outside of the post on the hour with a header. The dismissal of Lukovic late on was avoidable, for a needless foul on Gyan but still Serbia could have won it.
Milos Krasic was presented with a sight of goal from ten yards but was denied by Wigan goalkeeper Richard Kingson. But then came Kuzmanovic's ridiculous decision and Gyan ensured Ghana became the first African team to win a game at this year's competition.
Serbia (4-4-2): Stojkovic 6; Ivanovic 7, Lukovic 7, Vidic 8, Kolarov 6; Krasic 6, Milijas 5 (Kuzmanovic 62 6), Stankovic 7, Jovanovic 6 (Subotic 76); Pantelic 7, Zigic 4 (Lazovic 69).
Subs (not used): Isailovic, Rukavina, Kacar, Tosic, Obradovic, Ninkovic, Petrovic, Mrdja, Djuricic.
Ghana (4-5-1): Kingson 7; Pantsil 7, Vorsah 7, John Mensah 7, Sarpei 6; Tagoe 7, Annan 6, Kevin-Prince Boateng 7, Andrew Ayew 6, Asamoah 6 (Appiah 73); Gyan 7 (Owusu-Abeyie 90).
Subs (not used): Adjei, Inkoom, Jonathan Mensah, Derek Boateng, Muntari, Amoah, Rahim Ayew, Adiyah, Addy, Ahorlu.