Ett nederlagstippat Paraguay chockade Tyskland strax före paus.
Matias Galarza kom runt på kanten och hans inlägg hittade pannan på stora anfallsstjärnan Julio Enciso som nickade in 1–0.
En annan anfallare skulle knoppa in kvitteringen. Nio minuter efter paus skickade Florian Wirtz in bollen och Kai Havertz skarvade in 1–1.
Tyskland låg på för ett avgörande men fick se sextondelsfinalen gå till förlängning.
Där trodde man sig ha tagit ledningen när Jonathan Tah knoppade bollen i nät men målet dömdes bort för gruff efter VAR-granskning.
I stället fick straffar avgöra. Där missade Havertz och Nick Woltemade för Tyskland – och Antonio Sanabria och Fabian Balbuena för Paraguay.
I utslagsstraffarna sköt Tah över – och José Canale skickade Paraguay vidare.
Den 4 juli ställs de mot vinnaren i tisdagsnattens match mellan Frankrike och Sverige. Den börjar 23.00, svensk tid.