Adrian Ramos came off the bench to score a priceless late winner for Borussia Dortmund as Thomas Tuchel's side edged a thrilling 3-2 victory against struggling Werder Bremen.
The substitute's intervention proved a crucial one for Dortmund, who remain five points behind Bundesliga leaders Bayern Munich, after Pep Guardiola's side defeated Eintracht Frankfurt 1-0 earlier on Saturday.
Pierre-Emerick Aubameyang gave Dortmund the lead shortly after half-time with his 23rd league goal of the season, the Gabon international chipping Felix Wiedwald after Henrikh Mkhitaryan played him through.
The lead did not last long as Bremen hit back swiftly, Gonzalo Castro diverting Alejandro Galvez's strike into his own net after Dortmund failed to deal with a corner.
Zlatko Junuzovic put Bremen ahead after fantastic work by Levin Oztunali with 16 minutes remaining, but Dortmund hit back almost immediately as Shinji Kagawa provided the finishing touch to a great team move.
And Ramos claimed the winner within two minutes of his introduction, the striker converting Mkhitaryan's corner to keep Dortmund within sight of Bayern.
Defensive injuries meant Matthias Ginter partnered Sven Bender at the back for Dortmund, while Bremen were without top goalscorer Claudio Pizarro, who hurt his back on international duty with Peru, so Anthony Ujah started up front.
And Ujah went close to putting the visitors into a shock early lead, but the striker could not quite stretch enough to convert a dangerous Sambou Yatabare cross.
Wiedwald made a great save to deny Erik Durm after 14 minutes, the goalkeeper blocking the prodded effort after Marco Reus opened up the Bremen defence superbly.
Aubameyang threatened on three occasions towards the end of the first half as Bremen, whose run of 28 Bundesliga games without a clean sheet is a league record, held on.
Marcel Schmelzer smashed a volley into the side netting, before Galvez blocked a Reus header and Wiedwald saved Castro's curling strike.
Dortmund finally broke Bremen's resistance to open the scoring in the 53rd minute.
Reus freed Mkhitaryan and his throughball was perfect for Aubameyang, who lifted a delightful finish over Wiedwald for his fifth Bundesliga goal since the mid-season break.
But the hosts, who had beaten their opponents in eight home Bundesliga games in a row, failed to find a second goal and Bremen levelled the scores in the 69th minute.
Dortmund failed to clear a corner and while Galvez's shot was sweet it was heading wide of the post before flicking Castro's ankle to beat Roman Burki and, galvanised, Bremen took the lead five minutes after their equaliser.
Oztunali battled his way into the box, recovering after being brought down by Bender, and pulled the ball back for Junuzovic to finish neatly.
But three minutes later Dortmund were back on level terms, substitute Kagawa slotting in after a fine team move involving Castro and Schmelzer and the winner came shortly afterwards.
Mkhitaryan's corner was perfectly placed for Ramos to attack and the powerful striker made no mistake to break Bremen hearts and leave Viktor Skrypnyk's side a point above the relegation zone.