We are about to witness a subsitution. Kenan Karaman (Dusseldorf) for Dodi Lukebakio.
Karim Onisiwo (Mainz) once again attempts to send a defence-splitting pass, but the opposition's defence is alert and intercepts the ball.
Mainz take the corner, but their hopes of scoring a goal end with a nice clearance by the defence.
Mainz are showing great team chemistry. They are passing it around beautifully. Excellent team work.
Friedhelm Funkel has decided to substitute Alfredo Morales and he is replaced by Aymen Barkok (Dusseldorf).
Substitution. Bote Baku (Mainz) replaces Robin Quaison.
What a big chance! Jean-Philippe Mateta (Mainz) picks up an inch-perfect pass inside the box and fires the ball a whisker wide of the right post.
Goal! Karim Onisiwo (Mainz) fires the rebound into the roof of the net after the ball breaks to him in the box. The score is 2:1.
Dawid Kownacki (Dusseldorf) is awarded a yellow card for his tackle. He doesn't seem to agree with the decision, but Markus Schmidt ignores the protests.
Danny Latza (Mainz) gets on the end of a pass and takes a shot from the edge of the box, but it's blocked by one of the defending players.
Dusseldorf didn't take advantage of the corner and score as the opposition's defence was alert and averted the threat.
Sandro Schwarz decides to make a substitution. Alexander Hack will be replaced by Alexandru Maxim (Mainz).
Dodi Lukebakio (Dusseldorf) fails to score from the penalty spot! His effort crashes against the left post.
Dodi Lukebakio (Dusseldorf) will take the responsibility and he is already preparing the ball.
Alexander Hack (Mainz) probably handled the ball. Dusseldorf are awarded a penalty! What an opportunity to score.
Kaan Ayhan (Dusseldorf) picks up a caution.
Markus Schmidt shows a yellow card to Benito Raman (Dusseldorf) for a tough tackle.
Aaron Caricol (Mainz) swings in a cross, but the ball is cleared to safety by one of the defending players.
The resulting set piece from Dusseldorf is comfortably intercepted by one of the defending players.
Benito Raman (Dusseldorf) gets on the end of a good pass and from mid-range he unleashes a decent strike, but the shot is blocked by the defender. The linesman makes the right call and Dusseldorf will have a corner.
Dusseldorf take the corner, but their hopes of scoring a goal end with a nice clearance by the defence.
The whistle blows and Markus Schmidt starts the second half.
The referee blows his whistle for half-time, bringing to a close the first 45 minutes of the match.
Gooal! No wait, it's been ruled out for offside. Danny Latza (Mainz) disagrees, but the linesman is sure about his call.
Long passes, short passes and one-two passes. Mainz are showcasing great team work by keeping possession and producing pin-point passes from player to player. The opposition's players are finding it very difficult to intercept at the moment.
The free kick from a promising distance is taken by Jean-Philippe Gbamin (Mainz), who fires in a direct effort just wide of the left post. What a chance!
Alexander Hack (Mainz) makes some space for himself and from mid-range let's fly with a wild effort which goes high over the crossbar.
Another attempt to send the ball beyond the defence by Matthias Zimmermann (Dusseldorf) is thwarted and cleared to safety.
Markus Schmidt blows his whistle after Alfredo Morales (Dusseldorf) brings one of his opponents down with a strong tackle. It's a free kick to Mainz, but they probably won't attempt a direct shot on goal from here.
Wonderful movement by Dusseldorf. The players are holding possession, mostly exchanging one-touch passes. They control the pace of the game now.
Michael Rensing displays his ability to read the game and clears the danger after Jean-Philippe Mateta (Mainz) threatened to latch onto a through ball from just outside the box.
A superb shot by Markus Suttner (Dusseldorf) after a mid-range free kick! His attempt, however, flies just over the crossbar.
Markus Suttner (Dusseldorf) takes the corner, but one of the defenders reacts well and rises highest to head the ball away.
Jean-Philippe Mateta (Mainz) tries to latch onto a through ball, but it's too long.
Robin Quaison (Mainz) receives a fine cross inside the box and attempts to score a goal, but his strike flies just a few inches over the bar.
Danny Latza (Mainz) prepares to take a corner kick.
Karim Onisiwo (Mainz) finds himself in a promising position after receiving a beautiful cross from the side, but the opposition defence is ready and one of the defenders averts the threat with a quick interception. Mainz force a corner. Their opponents will face another attacking threat.
Goal! 1:1. Dodi Lukebakio (Dusseldorf) taps home from almost on the goal line after a lucky rebound fell at his feet.
Mainz slow the tempo of the game down by exchanging a combination of one or two touch passes. The opposition's players are finding it very difficult at the moment, very physically demanding to run without the ball.
Dangerous play by Markus Suttner (Dusseldorf). Markus Schmidt blows his whistle for a foul.
Dusseldorf have a chance to score from a corner kick, but the ball is cleared by a defender.
A defence-splitting pass is taken in his stride by Benito Raman (Dusseldorf) in the box. Without even looking up he drills a shot towards the right side of the goal, but Florian Muller pulls off a brilliant save. Dusseldorf have been awarded a corner kick.
Dawid Kownacki (Dusseldorf) wastes a big opportunity! He controls the ball after a nice low pass and shoots from a promising distance. His poor effort goes miles wide of the left post.
Jean-Paul Boetius (Mainz) meets a cross inside the box, but Michael Rensing wins the battle for the ball and the chance is gone.
Karim Onisiwo (Mainz) was too forceful with his tackle and Markus Schmidt interrupted the game to signal a free kick. It's a free kick to Dusseldorf, but it's in no position for a direct shot on goal.
Aaron Caricol (Mainz) whips in the corner, but one of the defending players gets a head on it and intercepts.
Michael Rensing was forced into action to thwart Robin Quaison (Mainz). He found himself some space after latching on to a pass and unleashed a shot to the bottom left corner but couldn't beat the keeper.
Jean-Philippe Mateta (Mainz) comes close to scoring! He meets a lovely lofted pass from Karim Onisiwo, but sends his close-range header way wide of the left post.
Matthias Zimmermann (Dusseldorf) makes a strong challenge and Markus Schmidt blows for a foul. A free kick is awarded to Mainz.
Goal! Karim Onisiwo puts the ball on a plate for Jean-Philippe Mateta (Mainz), who scores with a simple close-range finish. It's 1:0.
The first half has just begun.
Mainz will kick the game off.
Let us introduce today's referee to you, and it's Markus Schmidt.
Welcome to our minute-by-minute commentary of today's clash. You can enjoy a written form of everything important that will be happening on the pitch. Have fun.