TEMPO.CO, Jakarta - The Hoffenheim midfielder slotted home late on in Sinsheim, sparing boss Joachim Low's blushes after a sticky German showing.
Schulz's low drive crept under Peru goalkeeper Pedro Gallese's body and into the net, as the hosts edged to victory at the Rhein-Neckar Arena.
Luis Advincula put Peru ahead with a crisp finish, before Julian Brandt levelled for the hosts before half-time.
But just as Germany were staring down the barrel of a frustrating draw, Schulz's 18-yard effort had just enough power to squirm home and seal the hosts' much-needed win.
Germany were bidding to exorcise the demons of their horrible World Cup experience, where they failed to progress past the group stages in Russia.
Low's men just about managed to start that process with a victory, but the performance level will doubtless have left much to be desired.
Advincula drilled the visitors into the lead after latching onto Christian Cueva's through ball, though home goalkeeper Marc-Andre ter Stegen will have been frustrated to have been beaten at his near post.
Just three minutes later Germany were level though, Brandt dinking neatly home after captain Toni Kroos' neat ball had bisected the Peru defence.
Jefferson Farfan should have blasted his side back into the lead when racing through on goal after the break. Instead the Peru skipper only managed to fire high into the stands, in the process gifting Germany a huge reprieve.
And the Peruvians were made to pay for that profligacy when Germany snatched the victory with five minutes remaining.
Schulz struck from the edge of the area - more in apparent hope than expectation. Gallese should have dealt with the danger, but the ball wriggled under his body and into the net - sparking equal measures of celebration and relief for the Germans.