Dortmund return to winning ways, thanks to Brandt's brace. They close the gap to six points, ahead of Bayern's meeting with Augsburg. Stuttgart stay a point above the bottom three, having played a game more than the teams below them.
DISALLOWED HAALAND GOAL
Haaland scores after a bit of a scramble, but Bellingham was offside in the build-up.
TIME ADDED ON
Four to go for Stuttgart to make things interesting. They've certainly come close already!
OFF THE BAR!
Almost a wondergoal from Sosa, who controls with his head and volleys against the crossbar from just inside the BVB area. He was on the run, too. Incredible effort!
Karazor goes up to control a ball, but catches Brandt with his studs on the way down. Not sure he even knew the Dortmund man was there.
A WHISKER AWAY!
Another HUGE chance goes begging as Massimo fails to connect with Thommy's come-and-get-me cross from the right. Dortmund's defenders have gone AWOL in recent minutes.
Former Stuttgart goalkeeper Kobel flies to his left to claw away Sosa's Beckham-esque curler on his weaker right foot. Mavropanos then sends a free header wide from the ensuing corner. It should be 2-1!
... and pacy ones at that.
Wolf, who's been enjoying a good run in the side, replaces Guerreiro on the left-hand flank. He's a right-sided player by trade - is that an area VfB can exploit?
BRANDT ON FIRE!
Dortmund double their lead after a sustained period of pressure. Brandt carries the ball into Stuttgart territory, exchanging passes with Reus before sending a low swerving shot beyond the reach of Müller from 18 yards. Five percent xG rating on that strike - lovely hit!
Dortmund haven't created too much by way of clear-cut scoring chances, but they are pushing hard for that second goal.
DORTMUND NOSES IN FRONT
Stuttgart block off the angle to deny Haaland a shot at goal, forcing him to play the ball back to Bellingham. It's helped on via Reus to Guerreiro, who shanks over from the corner of the six-yard area. That was a chance!
Positive change from Matarazzo to introduce Coulibaly. He did the damage for Stuttgart in Dortmund last season in a 5-1 win that cost Lucien Favre his job.
Sosa busts a gut to get to the byline and pull back a cross. Mavropanos takes on the shot from the edge of the area, the Arsenal loanee whipping a fierce effort just over.
Reus doesn't appear to catch his shot well from 18 yards, but it has Müller worried as it whistles just wide of his left-hand post. Dortmund moving the wall with pace and beginning to take charge...
Distance run (km)
Atakan Karazor Julian Brandt
A statement of intent from Stuttgart as Endo powers through the midfield before slipping a ball through to Marmoush. He rounds Kobel, but the angle is against him and Can recovers to block the shot, before the flag goes up for offside. BVB are wobbling.
Tomas sneaks in at the back post, stealing in ahead of Witsel, but it's a difficult chance to take and he sends Führich's free-kick wide.
THIRD DORTMUND CHANGE
BVB have lost a third player to injury. Mats Hummels was clutching a thigh before the break. Dan-Axel Zagadou is on.
Dortmund lead through Julian Brandt's early goal at the end of an entertaining first half. Stuttgart haven't been without their chances, but they've lacked the necessary composure in the final third.
Mangala pulls down Brandt, but the referee plays the advantage. He then drags Reus to the deck, and can have no complaints with the booking.
Brandt's ball into the Stuttgart area has just too much on it for Haaland. Hazard keeps the chance alive with an improvised return pass, but it's just over the head of Reus in the middle. Relief for Stuttgart!
Sosa shows tremendous desire to keep an overhit pass in play and win a corner off Can. His ensuing delivery doesn't match his effort levels, though, with Reus under no pressure whatsoever as he clears at the near post.
Tomas is moving gingerly after a tangle with Hazard. The Sporting loanee will attempt to run it off. Stuttgart are enjoying a decent spell, and won't want any disruptions.
WITSEL SAVES THE DAY!
Hummels and Can are rumbled trying to play out from the back. Führich scampers away and cuts a pass back into the danger zone, where Witsel slides in ahead of Tomas to toe the ball behind.
Dahoud's down for the second time in a few minutes. He's popped his right shoulder, and can't continue. Witsel is getting ready to come on...
Endo rides three Dortmund challenges in midfield, before releasing Führich. He squares to Marmoush, who has players to his left as he drives into the box before hoofing over. Selfish from the Egypt international. Tiago is fuming!
Can's responded well to a difficult showing in defeat to Leipzig. Brandt's also been a real livewire since coming on.
Stuttgart concede possession on the edge of the Dortmund area. BVB break at speed, but Brandt loses his footing in the box, just when Haaland had made his run between the centre-backs.
What a chance! Mangala pings a peach of a pass over to Marmoush in the Dortmund area. The March Rookie of the Month controls brilliantly, before dinking a chipped effort over the advancing Kobel and onto the roof of the net. Tough one to pull off - the angle didn't help.
Dortmund deserve to be ahead, based on their xG rating. You have to say, they've made a very assured start.
TAME FROM TOMAS
Stuttgart go straight up the other end, but Tomas doesn't trouble former VfB goalkeeper Gregor Kobel.
Florian Müller comes up with a big save at his near-post to keep out Reus's flick. It was far too easy for Hazard to find space and pick his cross. Stuttgart need to get tighter to the BVB shirts.
Confusion in Stuttgart. Mavropanos collides with a teammate on halfway as Bellingham sends Haaland in behind. He could go it alone, but squares for Brandt to slot home from inside the area. The flag goes up for offside, but the replay shows Haaland had timed his run to perfection. The goal stands following a VAR review.
Strong start from BVB as Reus wins another corner. Guerreiro sends it over, and Hummels heads off target.
Fabulous technique from Raphael Guerreiro as he hits a gorgeous half volley off the outside of the post from the edge of the area. That all came about after Stuttgart only half cleared a corner.
Borna Sosa Jude Bellingham
Numerical parity is restored as Brandt completes his warm-up, and enters the fray. Our thoughts are with Reyna.
The American, who has been so unlucky with injuries this season, pulls up injured after contesting a ball with Sosa. It was his right ankle - he's visibly upset, angry almost, as he makes way. It was only his sixth start of the Bundesliga campaign.
The ball's rolling at a very wet Mercedes-Benz Arena.
It's great to see the fans back as the players take to the field. Some atmosphere in Stuttgart!
Dortmund can still catch leaders Bayern, but they have just six matches left to overturn the nine-point gap. Although unbeaten in four, Stuttgart are only a point clear of the relegation zone and could drop back into the bottom three if results go against them this weekend.
THE HAALAND QUESTION
WATCH: DORTMUND 2-1 STUTTGART
STAND WITH UKRAINE
'Stop War' is emblazoned across the Stuttgart players' training shirts, while Dortmund have just announced they will play host to a benefit match against Dynamo Kyiv on 26 April. "The benefit match will take place three days after our away match in Munich, but even if it had taken place three days before that match, we would definitely have still played this match," said Rose. "Nothing is more important at the moment than standing up together for peace and helping the Ukrainians in times of this humanitarian catastrophe. We are happy about every single football fan, no matter what colours they wear, and about every single person who buys a ticket to help the Ukrainians who have been hit so hard by the war."
ROSE WANTS REACTION
"There was a lot of disappointment in the stadium and among ourselves after the Leipzig game," admits BVB boss Marco Rose. "Now we have the chance to set the record straight. Stuttgart have settled and are a really good attacking side. We need to disrupt their flow - that's our task."
"Dortmund are a side with great attacking quality, but we want to put up a good fight," said Stuttgart head coach Pellegrino Matarazzo at his pre-match press conference. "We’ve produced good to very good performances in recent weeks. That makes me optimistic that we can get the points we need in the remaining six matches to achieve our aim if survival."
LOOK WHOSE SHIRT'S HANGING HERE
DORTMUND TEAM NEWS
Haaland has gone four matches without scoring for the first time in his Bundesliga career, but makes his fifth straight start for club and country following injury. Dortmund captain Marco Reus was also back in action against Leipzig after a mini lay-off, and is joined in attack by Gio Reyna. Marius Wolf, who scored in the 1-1 draw in Cologne a fortnight ago, makes way as Die Schwarzgelben look to end a two-game winless run. Jude Bellingham is fit to start in midfield despite suffering with a dead leg this week, but Donyell Malen has not travelled.
STUTTGART TEAM NEWS
Sasa Kalajdzic scored his third goal in four games as Stuttgart took a point off relegation play-off incumbents Arminia Bielefeld last time out, but the towering Austrian striker is currently in isolation and will play no part against Dortmund. In his absence, Portuguese teenager Tiago Tomas slots into the centre, flanked by Rookie of the Month for March Omar Marmoush and Chris Führich. Left-back Borna Sosa is back after missing the Bielefeld draw with a knock. Hirkoki Ito, who deputised for Sosa, moves inside to compensate for the suspended Waldemar Anton.
Hitz, Zagadou, Moukoko, Brandt, Reinier, Witsel, Pongracic, Wolf, Bynoe-Gittens
DORTMUND STARTING XI:
Kobel - Can, Akanji, Hummels - Hazard, Dahoud, Bellingham, Guerreiro - Reyna, Haaland, Reus (c)
Bredlow, Mola, Coulibaly, Millot, Thommy, Massimo, Beyaz, Bazzoli, Tibidi
STUTTGART STARTING XI:
Müller - Stenzel, Mavropanos, Ito, Sosa - Endo (c), Karazor, Mangala - Marmoush, Tomas, Führich
Sosa back? Rookie of the Month set to start? The official line-ups are on their way...
EARLY GLIMPSE INSIDE
Here you can find all the information about Stuttgart against Dortmund on Matchday 29.