Momentum swung between the sides in a frantic encounter at RheinEnergieSTADION on Tuesday, 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.
Germany succumbed again in the 26th minute. Toni Kroos, on his 100th cap, gifted possession to Switzerland, with Freuler lifting an exquisite finish over the onrushing Neuer.
A response was required and it came inside two minutes, as Werner caught Switzerland's defence cold with a crisp finish across Yann Sommer, and Switzerland's hard work was undone after the interval.
Having already struck the woodwork, Havertz pounced on Schar's slack pass and finished calmly beyond Sommer.
But parity was short-lived, and Switzerland retook the lead just under two minutes later when Gavranovic hammered home on the rebound following Neuer's save from Haris Seferovic.
Germany were not to be beaten, though, and Gnabry's brilliant back-heel from Werner's cut-back made it 3-3.
Kroos went close to capping his landmark with a winner when a free-kick sailed just wide, before Sommer denied substitute Julian Draxler, with Switzerland reduced to 10 in stoppage time when Schar received his second booking.
What does it mean? Low getting lucky
Germany have been far from convincing in their five fixtures in 2020, managing just one victory. Their defence is particularly suspect, having conceded nine times, but Joachim Low has the attacking talent to get him out of trouble, and the 2014 World Cup winners sit second in Group A4, a point behind Spain, who suffered a shock 1-0 defeat to Ukraine.
Stellar Gnabry continues his hot streak
It was a supreme finish from Gnabry, who since his senior bow in November 2016, has scored 14 international goals from 15 appearances, more than any other Germany player.
Schar rounds off desperate display with a red
Having given away possession for Germany's first and second goals, Schar capped a dire performance with a foul on Draxler in stoppage time to receive his marching orders. The centre-back committed two fouls, and was booked for both.
Germany face Czech Republic in a friendly on November 11, while Switzerland take on Belgium on the same day.