Watch: Terzic: "Haller had a fantastic role today"
Huge three points!
And breathe! A thrilling encounter ends in dramatic fashion as Dortmund complete the comeback to triumph. Just like versus Augsburg, Reyna is the hero, and Terzic's side are now just five points behind Bundesliga leaders Bayern. The late goal is a bitter blow for Mainz, but Svensson will be happy with how his side battled throughout the 90 minutes.
Dortmund strike at the death!!
Incredible!!!! Dortmund surely have the winner with less than 90 seconds on the clock. A corner is flicked on by Haller, and Giovanni Reyna is waiting at the back post to poke home!
None of Dortmund's eight previous away games in the Bundesliga this season have ended in a draw - will either side extend that run in stoppage time?
What a chance!
Almost a winner for Mainz! The hosts break on the counter and Ajorque plays Anton Stach in. However, he can only drag his shot wide.
Mainz hungry for more
'Die Nullfünfer' aren't happy with a point here, and are making sure Dortmund need to stay concentrated.
Ajorque makes his debut
Svensson brings Ajorque on for his first Mainz appearance - will he be the hero?
Now Fulgini has an opening, but Kobel is equal to his curled shot.
Mainz have moved ahead in terms of xGoals. Now they just have to try and make that count on the scoresheet!
Mainz more threatening
Bellingham absence felt
Svensson freshens things up
Mainz, meanwhile, make two substitutions of their own, with goalscorer Lee exiting the field.
Shuffling the pack
Terzic blinks first and makes a trio of changes, including two of the goalscorers from the win over Augsburg. Haller is also introduced as Dortmund go in search of the three points.
Marcus Ingvartsen gets on the end of Aymen Barkok's cross, but his header flies narrowly over the bar!
Adeyemi takes aim!
A couple of opportunities for Adeyemi in quick succession! First, he drags a shot wide, before volleying over the bar.
A half-chance for Karim Onisiwo, but the forward can't quite steer his first-time shot on target from an admittedly difficult position.
Not much in it on the xGoals front.
Primed and ready
Terzic's men have started the second half on the front foot as they look to find a way past this organised Mainz defence.
45 minutes left for either of these two sides to find a winner.
All square at the break
The match burst into life, as Lee opened the scoring and Ryerson equalised in the first five minutes! It has settled down since then, with 'Die Schwarzgelben' enjoying plenty of possession and Mainz looking to provide danger on the counterattack. All the play for!
Adeyemi heavily involved
Malen tries his luck
Donyell Malen shoots from the edge of the box, but it is an easy save for Dahmen.
Racking up the kilometres
Moukoko on the periphery
Besides his early opportunity, Moukoko has been quiet. Dortmund will be looking to get him involved as quickly as possible.
The ball breaks to Leandro Barreiro outside the Dortmund area, but the Luxembourg international doesn't quite catch it right and his shot flashes wide of the post
The hosts have managed to get a bit more of a foothold in the game in the last few minutes and have been able to mount a couple of attacks. No clear-cut chances as of yet, though.
Süle and Ryerson celebrate
Dortmund dominating possession
Adeyemi inches away!
Karim Adeyemi comes within inches of giving Dortmund the lead, scooping his effort from inside the area just over the crossbar.
Mainz strike first
Moukoko and Süle go close!
Youssoufa Moukoko is played in, but Dahmen saves his shot well. Then, the Mainz goalkeeper is equal to Süle's effort from outside the area.
Dortmund respond immediately!
Wow, what a start!! Almost straight away, and Dortmund are back on level terms through Julian Ryerson. The right-back cuts onto his left foot and his shot, via a Fernandes deflection, leaves Finn Dahmen with no chance - that was the Norwegian's first strike for the club!
Mainz out of the blocks fast!
Less than two minutes in, and Mainz are in front! Edimilson Fernandes' cross finds Lee, whose header nestles n into the corner despite Gregor Kobel's best efforts.
Here we go!
Dortmund kick us off in this first half
In the tunnel
The players are preparing to enter the pitch, so we'll soon be underway!
Watch: Mainz pre-match pitch inspection
Watch: Dortmund pre-match pitch inspection
Team news - Mainz
Bo Svensson also makes two changes to his team, with Alexander Hack and Dominik Kohr replaced by Andreas Hanche-Olsen, who makes his Mainz debut following his move from Belgian outfit Gent earlier this month, and Lee Jae-sung respectively. New signing Ludovic Ajorque is on the bench.
Team news - Dortmund
Terzic makes two changes to the side that beat Augsburg - Mats Hummels drops to the bench and is replaced by Niklas Süle, who also takes the captain's armband, while Jude Bellingham picked up a fifth yellow card of the season at the weekend and therefore misses out due to suspension. Emre Can takes his place in the starting line-up.
Watch: Dortmund arrive at the Mewa Arena
Mainz starting XI
Dahmen – Fernandes, Hanche-Olsen, Caci – Widmer (c), Barreiro, Barkok, Martin – Lee – Onisiwo, Ingvartsen
Riess, Leitsch, Stach, Fulgini, Bell, Ajorque, Da Costa, Hack, Gruda
Dortmund starting XI
Kobel – Ryerson, Süle (c), Schlotterbeck, Guerreiro – Can, Özcan – Adeyemi, Brandt, Malen – Moukoko
Meyer, Reyna, Dahoud, Haller, Hummels, Wolf, Modeste, Passlack, Bynoe-Gittens
Watch: Haller's comeback from cancer
Watch: Dortmund 4-3 Augsburg
Watch: VfB Stuttgart 1-1 Mainz
Big game for Dortmund
After edging a seven-goal thriller with Augsburg, Borussia Dortmund have the opportunity to climb back into the top four with victory in Mainz. Will they take it? Stay tuned...