Miroslav Klose was dismissed and Lukas Podolski's poor penalty was easily saved by Vladimir Stojkovic as Serbia pulled off the latest upset at South Africa 2010.
Jovanovic, who is heading to Liverpool from Standard Liege this summer, pounced from close range barely a minute after Klose was sent off by over-fussy referee Alberto Undiano late in the first half.
And despite a late flurry of pressure from Germany, Raddy Antic earned the distinction of guiding Serbia to their first victory at a World Cup Finals since 1998, when they were known as Yugoslavia.
Germany, so irrepressible in their opening game against Australia, must have felt everything conspired against them and they now have to beat Ghana on Wednesday to keep their World Cup bid alive.
Serbia were clearly on a mission to make amends for their dreadful performance against Ghana and frustrated Germany for the majority of the first period.
But it was referee Undiano who really dominated the half.
He was brandishing yellow cards around like confetti, booking five players before the inevitable red card, to Klose, eight minutes before the break for a innocuous challenge on Dejan Stankovic.
Germany were patently affected by the loss of their 96-cap striker, and Jovanovic duly capitalised on their hesitancy to rifle home, after Nikola Zigic's knockdown.
Sami Khedira did strike the crossbar in injury time but it was to be only Germany's threat in the first half.
Serbia were subjected to a bombardment of pressure early in the second with Podolski missing two good chances.
But Manchester United defender Nemanja Vidic appeared to gift Germany a reprieve when he bizarrely handled a cross in the area. Podolski's penalty, however, was simply awful.
Jovanovic and Zigic both struck the post late on and Germany are now facing the grim prospect of failing to qualify for the second round for the first time since 1938.
Serbia's win ends an alarming run of five successive defeats at the competition and reaching the knockout phase in now within their grasp - a situation that looked virtually unthinkable last week.
Germany (4-5-1): Neuer, Lahm, Friedrich, Mertesacker, Badstuber (Gomez 77); Schweinsteiger, Khedir, Ozil (Cacau 70), Muller, (Marin 70), Podolski; Klose.
Subs (not used): Wiese, Butt, Jansen, Tasci, Boateng, Aogo, Trochowski, Kroos, Klessing.
Serbia (4-5-1): Stojkovic; Ivanovic, Subotic, Vidic, Kolaro; Krasic, Ninkovic (Kacar 70), Kuzmanovic (Petrovic 75), Stankovic, Jovanovic (Lazovic 79); Zigic.
Subs (not used): Isailovic, Djuricic, Rukavina, Obradovic, Tosic, Milijas, Pantelic, Mrdja.