The Germany playmaker proved to be an inspired change, netting the crucial goal as Jurgen Klopp's side picked up three points on the first night of the Bundesliga season
Marco Reus got the hosts' Bundesliga defence off to a flying start with a goal on his league debut, before Theodor Gebre Selassie threatened to spoil the party with a 75th-minute header.
But Gotze was on hand to save the day for BVB, who never really looked in control of the match and were often troubled by Bremen's direct running down the flanks.
It was a glaring error from left-back Aleksandar Ignjovski that gifted the champions an early lead. Jakub Blaszczykowski played a poor pass towards Reus, but the Serbian defender tripped over his own feet and allowed the former Borussia Monchengladbach to collect, bare down on goal and dispatch a fine finish into the far corner.
After a brief period of goal-inspired dominance, BVB were almost caught out twice in a matter of minutes by Eljero Elia. First, the Dutch winger got the better of Oliver Kirch but scuffed his shot wide, before latching on to a sliderule Aaron Hunt pass and firing straight at goalkeeper Roman Weidenfeller when well-placed to equalise.
But they went even closer after 24 minutes when Marko Arnautovic struck the base of the post with a fine volley after the hosts failed to clear their lines from Zlatko Junuzovic's corner.
Ignjovski provided a decent cross moments later, but his torrid evening at the back continued when he was booked for a last-ditch lunge on Blaszczykowski, who had the goal in his sights following a fine team move from Jurgen Klopp's men.
At the back, however, Neven Subotic and Mats Hummels looked suceptible to direct, pacey attacks and relied on their full-backs for help on several first-half occasions.
Subotic forced Sebastian Mielitz into a fine one-handed save five minutes into the new half with a powerful header from Marcel Schmelzer's inswinging corner, while Sebastian Prodl wasted a gilt-edged chance to level the scores seven minutes later when he glanced Aaron Hunt's free-kick wide.
The game opened up as the clock ticked towards the hour mark, with the visitors threatening through a couple of dangerous Arnautovic crosses, while Robert Lewandowski's direct running and aerial prowess threatened to put the game to bed for BVB.
Ignjovski was put out of his misery with 25 minutes to go when he was substituted for Nils Petersen, but the game lost none of its pace as Sebastian Kehl registered a tame shot on target among a frantic if impotent spell for both sides.
Despite never really threatening with clear-cut chances, the energy and willingness of both sides suggested that there was to be another goal before the night was out, and indeed it was Thomas Schaaf's side who drew level with just over 15 minutes remaining.
Arnautovic, this time floated a delicate cross towards Theodor Gebre Selassie, who rose highest to glance a header every bit as gentle as the cross into the far corner.
Klopp responded by throwing on Gotze for the ineffective Kevin Grosskreutz, and he was rewarded almost immediately. Following another direct run from Blaszczykowski, Poland team-mate Lewandowski turned the ball around the corner for the young German, who steadied himself and slotted a cool finish inside the post.
Petersen almost drew Werder level yet again, but yet another Arnautovic cross bounced off the substitute's hip and wide of goal.
It was a somewhat shaky start to their title defence, but Dortmund will be thankful that they have the requisite strength in depth to be able to handle such scares. For Bremen, they will have no doubt been buoyed by their resilient showing and can look forward to improved performances, despite not winning in their last 10 league outings.