It was ultimately a goalkeeping error that gave the Mannschaft the win at the Rhein-Neckar-Arena.
Debutant Nico Schulz poked a weak shot at Pedro Gallese, but the ball dribbled under the keepers's body, and Germany had their winner.
It was a tough end to the night for Gallese, who had made several good saves.
Peru took a shock in the 22nd minute after Luis Advincula sped away down the right and beat Ter Stegen at his near post.
However, Germany were quickly on level terms when the impressive Julian Brandt dinked the ball over Gallese to make it 1-1 just two minutes later.
Forward Marco Reus missed 3 fantastic chances in the first half, but squandered each and every one and it came as little surprise when Joachim Low replaced the Borussia Dortmund man with Julian Draxler at half-time.
A match that most had predicted Germany to dominate was surprisingly even. Although they only had 39% posession, Peru broke fluently and regularly caused problems on the counter, albeit faced with some unconvincing Germany defending.
Peru talisman Jefferson Farfan missed a wonderful chance to make it 2-1 when he blazed over from inside the box.
The South Americans were eventually made to rue that miss as Schulz did just enough to help Germany get back to winning ways after a 0-0 with France on Thursday and a less than impressive World Cup.
September 9, 2018