Orhan Ademi gave Braunschweig their first lead of the season at home, but Max Meyer brought the Royal Blues level within 10 minutes.
Karim Bellarabi then raised the home fans' hopes that they would finally see their team win, but Leon Goretzka replied before Roman Neustadter clinched victory for Jens Keller's men in stoppage time.
Schalke were without a trio of key players due to injury and they seemed to struggle too against a Braunschweig side who picked up their first win back in the Bundesliga a fortnight ago.
Braunschweig now wanted their first home win of the season, but Ademi was a bit too slow to take their first chance in the eighth minute, Benedikt Howedes getting in his tackle.
Ademi got the better of the Germany defender the next time he was faced with him in the 20th minute, slotting the ball through the legs of Ralf Fahrmann, deputising for the injured Timo Hildebrand, to give the hosts the lead.
Their advantage lasted less than 10 minutes before Meyer pounced on a mistake by Braunschweig goalkeeper Daniel Davari, who flapped at a corner, to bring the Royal Blues level.
The smiles were soon wiped from the Schalke faces when Marco Hoger was carried off with a knee injury, joining Kevin-Prince Boateng, Klaas-Jan Huntelaar and Jermaine Jones on the sidelines with the same ailment.
And they were dealt another blow when Bellarabi put Braunschweig in front for the second time in the 59th minute.
Mirko Boland, a former Schalke youth player, set up Bellarabi, who beat Felipe Santana and then shot into the far corner.
Their lead lasted only six minutes this time before Goretzka, who replaced the injured Hoger in the first half, converted from close range after the hosts failed to clear their lines.
An entertaining game could have gone either way, but just as it seemed like it was going to end all square, Neustadter silenced the home fans with a winner.
Both Julian Draxler and Christian Fuchs had shots blocked, but the ball fell out kindly for the Schalke midfielder, who took his opportunity to fire the ball in and clinch the points.