The home side were ahead inside two minutes when Jone Samuelsen netted with a close-range header.
The shell-shocked Dortmund slipped even further behind two minutes later thanks to Espen Rudd's free kick.
Pierre-Emerick Aubameyang reduced the deficit just after the half-hour mark with a well-taken goal to give BVB a lifeline heading into the second half.
It took Dortmund just two minutes of the second half to cut the arrears further, with Shinji Kagawa netting to make it 3-2 with a low shot into the corner.
Ilkay Gundogan went close with dipping effort shortly after as Tuchel's men pushed to restore parity, and Aubameyang eventually completed the comeback with his second goal of the game with around 13 minutes remaining.
Henrikh Mkhitaryan then gave Dortmund an unlikely lead with six minutes left with a header from close range.