Momentum swung between the sides in a frantic encounter at RheinEnergieSTADION on Wednesday, with Germany coming back from a two-goal deficit.
Chelsea duo Timo Werner and Kai Havertz got those goals, cancelling out efforts from Mario Gavranovic and Remo Freuler.
Gavranovic's second – a thumping strike from close range – restored Switzerland's lead, though Gnabry's wonderful flick on the hour ultimately claimed a share of the spoils in Cologne, where Fabian Schar was sent off late on.
Manuel Neuer made a fine save to deny Xherdan Shaqiri in the fourth minute, but Germany's goalkeeper was picking the ball out of the net a moment later – Gavranovic looping in a wonderful header after the hosts failed to clear the resulting corner.