TSG Hoffenheim vs Borussia Dortmund Prediction, Preview and Stats

Germany flag 2025/2026 Bundesliga, Germany
PreZero Arena Sat, 18 Apr - 1:30 PM
Bundesliga
TSG Hoffenheim TSG
2 Winner 1
Borussia Dortmund BVB
Full Time Sat, 18 Apr 1:30 PM
Round 30 Regular Season
Andrej Kramaric - 90+8' (P), 42' (P)
Goal
|
Goal
Serhou Guirassy - 87'

CONTEXT

TSG Hoffenheim pulled off a gritty 2-1 victory over Borussia Dortmund at PreZero Arena, defying expectations in a tightly contested Bundesliga clash. The hosts took the lead in the first half and held firm, with Dortmund dominating possession at 54% but failing to convert chances effectively. Hoffenheim's defense stood tall, absorbing pressure and striking decisively to secure the three points. Despite Dortmund entering as the stronger side on paper, Hoffenheim's resilience shone through, marking a significant deviation from pre-match structural norms. No red cards disrupted play, and the second half saw no major tactical shifts, allowing the game to flow naturally. This result highlights Hoffenheim's ability to outperform in high-stakes encounters.

TL;DR

  • Structural deviation: TSG Hoffenheim recorded a significant 61.3% structural deviation as winners.
  • Efficiency shift: Efficiency stayed in line with expectations throughout the match.
  • xG alignment: xG alignment cannot be assessed due to unavailable data.
  • Market alignment: Final outcome aligned with pre-match market probabilities.
  • xG expectations: xG expectations remain unevaluated without performance metrics.
  • Event impact: No second-half adjustments or key events altered the match flow.
  • Red card distortion: Zero red cards meant no distortion to game dynamics.
No standings statistics available.
No head-to-head records found.
0.5+ goals: 85%
1.5+ goals: 70%
2.5+ goals: 50%
3.5+ goals: 25%
Confidence: High (≥8 matches)

Quality vs Volume

Home: xG 1.8, Shots 12, xG/Shot 0.15
Away: xG 1.5, Shots 14, xG/Shot 0.11

Open Play vs Set Play

Open Play: 65%
Set Play: 35%

Expected Points

TeamxPts
Home1.8
Away1.2
ℹ️ Methodology: Expected Goals (xG) measures shot quality

Match referee

D. Siebert

25 matches in sample
Avg. cards 0.12
Fouls / match 0.52
Yellow cards / match 0.12
Red cards / match 0
Penalties / match 0

Other match officials

J. Seidel

1st Assistant

R. Foltyn

2nd Assistant

T. Reichel

4th Official

TSG Hoffenheim C. Ilzer
C. Ilzer
VS
Borussia Dortmund N. Kovač
N. Kovač
1.91
Avg Points / Game (Last 100 Matches)
2.17
0.83 i
Last 6 Opponents
FC Augsburg Rank: D
FSV Mainz 05 Rank: L
RB Leipzig Rank: L
VfL Wolfsburg Rank: D
Heidenheim Rank: W
St. Pauli Rank: L
Avg Points / Game (Last 6 Matches)
2 i
Last 6 Opponents
Bayer 04 Leverkusen Rank: L
VfB Stuttgart Rank: W
Hamburger SV Rank: W
FC Augsburg Rank: W
FC Köln Rank: W
FC Bayern München Rank: L
8
Head to Head (Wins - Draws - Losses)
8 - 11 - 16
16

Win Probabilities

Live Win Probability (90 Min)
Home TSG Hoffenheim
38.69%
Draw
24.61%
Away Borussia Dortmund
36.7%

Movement

Changes since opening
TSG Hoffenheim
+33.16%
Draw
-64.91%
Borussia Dortmund
+31.75%

Team Power Ranking

i
What is Power Ranking?
Power score: composite of opponent-weighted form (last 6 & 20 games) and league position over last 3 seasons.
21.73
34.13
0 (Weakest) 100 (Strongest)
Metric
TSG Hoffenheim
Borussia Dortmund
Power Score
21.73
34.13
League Position
5
2
Global Rank
-
-

Form Analysis Opponent-Weighted

Line chart of recent results (points/trend). Friendlies excluded by default. Hover for opponent, result, xG/xGA and power ranking — based on last 6 matches.

vs
TSG Hoffenheim Opponent-weighted form score
Borussia Dortmund Opponent-weighted form score
Win (3 pts) Draw (1 pt) Loss (0 pts) TSG Hoffenheim Borussia Dortmund

Heatmaps Ball coordinates

Attack and defence zones from ball position data. Filters: last 6 matches (overall/home/away), time period, competition.

vs

TSG Hoffenheim

Left / Center / Right
Opposition half density
vs season average

Borussia Dortmund

Left / Center / Right
Opposition half density
vs season average

Possession Efficiency Possession-Adjusted

How effectively each team uses and defends their share of possession. Efficiency adjusted based on team possession percentage

TSG Hoffenheim ⚠ Proxy
vs
⚠ Proxy Borussia Dortmund
Attacking Efficiency
Higher is better
Attacking Efficiency
31.85
21.67
Defensive Efficiency
Lower is better
Defensive Efficiency
21.67
31.85
Combined Efficiency Index Z-score combining attacking and defensive possession-adjusted efficiency.
Positive = above league average.
Negative = below league average.
Formula: EfficiencyIndex = z(AttackEff) − z(DefenceEff)
-3 0 3
TSG Hoffenheim +0.89 Efficiency Index
vs
Borussia Dortmund -0.89 Efficiency Index
xG data unavailable for both teams. Values estimated using shots and dangerous attacks (proxy). Confidence: Medium.
TSG Hoffenheim
Borussia Dortmund
AttackEff = xG ÷ pos
DefenceEff = xGA ÷ (1−pos)

Set Pieces Efficiency Attack & Defence

Set-piece reliance and strength using expected metrics and actual outcomes for each team.

TSG Hoffenheim ⚠ Proxy
vs
⚠ Proxy Borussia Dortmund
Created Set-piece attacking threat
TSG Hoffenheim Borussia Dortmund
Set-piece xG Share Share of total expected goals generated from set pieces. Higher = more set-piece reliant in attack.
Goals per Match Average set-piece goals scored per match.
2.00 0.00
vs Expected (xG) Goals scored minus set-piece xG. Positive = overperforming; Negative = underperforming expectations.
vs
Conceded Set-piece defensive exposure
TSG Hoffenheim Borussia Dortmund
Set-piece xGA Share Share of total expected goals conceded from set pieces. Higher = more exposed to set pieces defensively.
Conceded per Match Average set-piece goals conceded per match.
0.00 2.00
vs Expected (xGA) Goals conceded minus set-piece xGA. Positive = conceding more than expected (bad); Negative = conceding less than expected (good).
vs
xG set-piece data unavailable for both teams. Values estimated using proxy metrics (shots, dangerous attacks). Confidence: Medium.
TSG Hoffenheim
Borussia Dortmund
xG Share = set-piece xG ÷ total xG
vs Expected = goals − set-piece xG

Counter / Transition Attack & Defence

What happens in the 15 seconds immediately after possession changes hands — based on Last 6 matches.

TSG Hoffenheim
vs
Borussia Dortmund
Attack After Winning Possession transition → offence
TSG Hoffenheim Borussia Dortmund
Goals per Match Average goals scored within 15s of winning the ball per match. ↑ better
Shots per Match Average shots taken within 15s of winning the ball per match. ↑ better
Dangerous Attacks Average dangerous attacks launched within 15s of winning possession per match. ↑ better
Defence After Losing Possession loss → defensive exposure
TSG Hoffenheim Borussia Dortmund
Goals Conceded Average goals conceded within 15s of losing the ball per match. ↓ better
Shots Conceded Average shots conceded within 15s of losing the ball per match. ↓ better
Dangerous Attacks Conceded Average dangerous attacks allowed within 15s of losing possession per match. ↓ better
TSG Hoffenheim
Borussia Dortmund
Window = 15s post-possession change
Index = 0–1 composite score

PRESSURE INDEX

Momentum phases from smoothed minute-by-minute pressure.

  • TSG had peak pressure around 46'.
  • TSG started the game with stronger pressure.
TSG Pressure BVB Pressure
Pressure Index: TSG reached the top pressure at 46' (65.51).

Team Head to Head Last 6 Seasons

Summary of 35 matches between these sides — filtered by competition and venue context.

TSG Hoffenheim TSG Home
35 matches
Borussia Dortmund BVB Away
Match Record
8
Wins
16
11
Draws
11
16
Losses
8
Goals
50
Goals Scored
57
57
Goals Conceded
50
-7
Goal Difference
+7

Data last updated: 2026-04-19T00:03:44+00:00

STARTING XI

Match Formation 4-2-3-1
Match Formation 3-4-2-1
Pitch
O. Baumann
Germany
1 O. Baumann
V. Coufal
Czech Republic
34 V. Coufal
O. Kabak
Turkey
5 O. Kabak
A. Hajdari
Switzerland
21 A. Hajdari
B. Fernandes da Silva Junior
Substitution
Brazil
13 B. Fernandes da Silva Junior
L. Avdullahu
Switzerland
7 L. Avdullahu
W. Burger
Substitution
Netherlands
18 W. Burger
A. Kramarić
Croatia
27 A. Kramarić
F. Asllani
Germany
11 F. Asllani
B. Touré
Substitution
Ivory Coast
29 B. Touré
T. Lemperle
Substitution
Germany
19 T. Lemperle
Pitch
G. Kobel
Switzerland
1 G. Kobel
N. Schlotterbeck
Germany
4 N. Schlotterbeck
W. Anton
Germany
3 W. Anton
N. Süle
Substitution
Germany
25 N. Süle
D. Svensson
Substitution
Sweden
24 D. Svensson
J. Bellingham
England
7 J. Bellingham
M. Sabitzer
Substitution
Austria
20 M. Sabitzer
J. Ryerson
Norway
26 J. Ryerson
M. Beier
Germany
14 M. Beier
C. Chukwuemeka
England
17 C. Chukwuemeka
F. Soares Silva
Substitution
Portugal
21 F. Soares Silva

General Information

Date & Time :
Apr 18, 2026, 01:30 PM
Competition :
2025/2026 Bundesliga, Germany · Round 30 · Regular Season
Stadium :
PreZero Arena
Capacity :
30150
Attendance :
30150
Pitch Surface :
Grass
Weather :
☀️ 12°C, Fair
Referees :
Jan Seidel
Rafael Foltyn
Tobias Reichel
Daniel Siebert

Statistics

Possession
TSG
47%
BVB
53%

Top Statistics

2 Goals 1
3 Big Chances Created 2
5 Shots 2
33 Dangerous attacks 74
46 Possession 54
4 Corners 3
9 Free kicks 14
2 Yellow Cards 3

Match Overview

2 Injuries 2
20 Throwins 23
85 Ball Safe 83
7 Goal Kicks 5
21 Successful Headers 13
40 Successful Dribbles Percentage 50
10 Dribble Attempts 12
1 Hit Woodwork 0
7 Goal Attempts 5
4 Successful Dribbles 6
2 Penalties 0
4 Substitutions 4
0 Assists 1

Attacking

79 Attacks 101
1 Big Chances Missed 2

Possession

9 Key Passes 5
81 Successful Passes Percentage 82
310 Successful Passes 358
30 Successful Long Passes Percentage 48
381 Passes 434
56 Long Passes 42
17 Successful Long Passes 20

Defensive

50 Duels Won 48
6 Interceptions 9
17 Tackles 16
2 Saves 2

Build-up

16 Total Crosses 28
5 Accurate Crosses 4

Discipline

6 Offsides 3
14 Fouls 11

Lineup

Referee : Daniel Siebert

Starting XI

1
Oliver Baumann
Oliver Baumann Goalkeeper
6.78
5
Ozan Kabak
Ozan Kabak Defender
7
13
Bernardo
Bernardo Defender
6.86
2
Robin Hranac
Robin Hranac
Defender72'
6.75
21
Albian Hajdari
Albian Hajdari Defender
6.92
34
Vladimír Coufal
Vladimír Coufal Defender
7.07
7
Leon Avdullahu
Leon Avdullahu Midfielder
6.89
11
Fisnik Asllani
Fisnik Asllani Midfielder
7.03
18
Wouter Burger
Wouter Burger Midfielder
7.16
6
Grischa Prömel
Grischa Prömel
Midfielder60'
6.91
27
Andrej Kramaric
Andrej Kramaric Midfielder
2
7.15
29
Bazoumana Touré
Bazoumana Touré Midfielder
6.93
22
Alexander Prass
Alexander Prass
Defender60'
6.74
19
Tim Lemperle
Tim Lemperle Attacker
6.91
33
Max Moerstedt
Max Moerstedt
Attacker83'
6.59
Referee : Daniel Siebert

Starting XI

1
Gregor Kobel
Gregor Kobel Goalkeeper
6.86
3
Waldemar Anton
Waldemar Anton Defender
7.05
4
Nico Schlotterbeck
Nico Schlotterbeck Defender
7.34
25
Niklas Süle
Niklas Süle Defender
6.74
5
Ramy Bensebaini
Ramy Bensebaini
Defender42'
7.09
7
Jobe Bellingham
Jobe Bellingham Midfielder
6.76
20
Marcel Sabitzer
Marcel Sabitzer Midfielder
6.85
40
Samuele Inácio
Samuele Inácio
Attacker71'
6.69
24
Daniel Svensson
Daniel Svensson Midfielder
6.86
10
Julian Brandt
Julian Brandt
Midfielder72'
7.07
26
Julian Ryerson
Julian Ryerson Midfielder
7.02
14
Maximilian Beier
Maximilian Beier Attacker
6.86
17
Carney Chukwuemeka
Carney Chukwuemeka Attacker
6.69
21
Fábio Silva
Fábio Silva Attacker
6.73
9
Serhou Guirassy
Serhou Guirassy
Attacker60'
6.99

Events

2ND-HALF
Event
Christian Ilzer
Argument / 7th Yellowcard
90+11'
90+10'
Event
Samuele Inácio
Argument / 5th Yellowcard
Event
Andrej Kramaric
Right foot shot / 2nd Penalty
90+8'
90+7'
Event
Julian Ryerson
Argument / 4th Yellowcard
Event
Alexander Prass
Penalty awarded
90+6'
87'
Event
Serhou Guirassy
Right foot shot / 1st Goal
84'
Event
Nico Schlotterbeck
Foul / 3rd Yellowcard
Event
Max Moerstedt Tim Lemperle
8th Substitution
83'
Event
Alexander Prass
Foul / 2nd Yellowcard
77'
Event
Robin Hranac Bernardo
7th Substitution
72'
72'
Event
Julian Brandt Daniel Svensson
6th Substitution
71'
Event
Samuele Inácio Marcel Sabitzer
5th Substitution
Event
Alexander Prass Bazoumana Touré
3rd Substitution
60'
Event
Grischa Prömel Wouter Burger
4th Substitution
60'
60'
Event
Serhou Guirassy Fábio Silva
2nd Substitution
1ST-HALF
Event
Andrej Kramaric
Right foot shot / 1st Penalty
42'
42'
Event
Ramy Bensebaini Niklas Süle
1st Substitution
Event
Andrej Kramaric
Penalty awarded
39'
Event
Christian Ilzer
6th Yellowcard
31'
Event
Wouter Burger
Argument / 1st Yellowcard
31'

Match Commentary

90
Yellow Card Yellow Card Important
Samuele Inácio from Borussia Dortmund receives a yellow card.
90
Corner Corner
Corner awarded to Borussia Dortmund after a concession by Oliver Baumann.
90
Update Update
The fourth official has indicated there will be 6 minutes of added time.
90
Update Update
Ramy Bensebaini of Borussia Dortmund won a free kick in defense.
90
Update Update
Foul committed by Max Moerstedt of TSG Hoffenheim.
90
Update Update
Andrej Kramaric from TSG Hoffenheim committed a foul.
90
GOAL! GOAL! Important
Goal! Andrej Kramaric scores for TSG Hoffenheim with a right-footed shot from the penalty spot. The score is now TSG Hoffenheim 2, Borussia Dortmund 1.
90
Yellow Card Yellow Card Important
Julian Ryerson of Borussia Dortmund receives a yellow card for handball.
90
Update Update
The second half ends with TSG Hoffenheim leading Borussia Dortmund 2-1.
90
Attempt Attempt
Missed chance. Julian Brandt of Borussia Dortmund takes a right-footed shot from outside the box after a free kick, but it goes very close to the goal.
90
Corner Corner
Corner awarded to Borussia Dortmund after Oliver Baumann concedes.
90
Update Update
Maximilian Beier from Borussia Dortmund won a free kick in an attacking position.
89
Update Update
Carney Chukwuemeka commits a handball for Borussia Dortmund.
89
Update Update
Offside called against TSG Hoffenheim. Max Moerstedt is in an offside position.
88
Attempt Attempt
Missed chance. Ozan Kabak from TSG Hoffenheim shoots with his right foot from outside the box, but the ball goes high and wide to the right.
87
GOAL! GOAL! Important
Goal! The match is now 1-1 as Serhou Guirassy scores for Borussia Dortmund with a right-footed shot from outside the box into the left corner, assisted by Ramy Bensebaini.
86
Update Update
Foul committed by Samuele Inácio of Borussia Dortmund.
86
Update Update
Grischa Prömel from TSG Hoffenheim won a free kick in the attacking area.
84
Update Update
Nico Schlotterbeck from Borussia Dortmund commits a foul.
84
Update Update
Ozan Kabak from TSG Hoffenheim committed a foul.
84
Update Update
Serhou Guirassy of Borussia Dortmund won a free kick in defense.
84
Update Update
Max Moerstedt from TSG Hoffenheim won a free kick on the left wing.
84
Yellow Card Yellow Card Important
Nico Schlotterbeck of Borussia Dortmund receives a yellow card for a foul.
83
Update Update
Foul committed by Robin Hranác of TSG Hoffenheim.
83
Substitution Substitution
Substitution for TSG Hoffenheim: Max Moerstedt replaces Tim Lemperle.
83
Update Update
Serhou Guirassy of Borussia Dortmund won a free kick on the left wing.
81
Update Update
Offside called against TSG Hoffenheim. Fisnik Asllani is in an offside position.
77
Yellow Card Yellow Card Important
Alexander Prass of TSG Hoffenheim receives a yellow card for a foul.
77
Update Update
Foul committed by Alexander Prass of TSG Hoffenheim.
77
Update Update
Ramy Bensebaini of Borussia Dortmund won a free kick in defense.
72
Substitution Substitution
Substitution for Borussia Dortmund: Julian Brandt replaces Daniel Svensson.
72
Substitution Substitution
Substitution for TSG Hoffenheim: Robin Hranác replaces Bernardo due to injury.
71
Substitution Substitution
Substitution for Borussia Dortmund: Samuele Inácio replaces Marcel Sabitzer.
67
Update Update
Vladimír Coufal from TSG Hoffenheim won a free kick in defense.
67
Update Update
Jobe Bellingham from Borussia Dortmund committed a foul.
66
Update Update
Waldemar Anton of Borussia Dortmund won a free kick in defense.
66
Update Update
Tim Lemperle from TSG Hoffenheim committed a foul.
65
Attempt Attempt
Daniel Svensson's shot for Borussia Dortmund from the center of the box is blocked. The assist came from Marcel Sabitzer.
65
Attempt Attempt
Maximilian Beier from Borussia Dortmund missed a header from the center of the box. The assist came from Julian Ryerson's cross.
62
Corner Corner
Corner awarded to TSG Hoffenheim, conceded by Gregor Kobel.
62
Corner Corner
Ozan Kabak of TSG Hoffenheim attempts a header from the right side of the six-yard box, but Gregor Kobel of Borussia Dortmund makes a save in the top right corner. The assist came from Vladimír Coufal's cross.
61
Corner Corner
Corner awarded to TSG Hoffenheim after Nico Schlotterbeck concedes.
60
Substitution Substitution
Substitution for Borussia Dortmund: Serhou Guirassy replaces Fábio Silva.
60
Substitution Substitution
Substitution for TSG Hoffenheim: Alexander Prass replaces Bazoumana Touré.
60
Substitution Substitution
Substitution for TSG Hoffenheim: Grischa Prömel replaces Wouter Burger due to injury.
57
Update Update
Leon Avdullahu from TSG Hoffenheim committed a foul.
57
Update Update
Fábio Silva is flagged offside for Borussia Dortmund.
57
Update Update
Marcel Sabitzer of Borussia Dortmund won a free kick in the attacking area.
56
Attempt Attempt
Carney Chukwuemeka's right-footed shot from the right side of the box is blocked.
53
Update Update
There is a delay in the match due to an injury to Wouter Burger of TSG Hoffenheim.
49
Corner Corner
Corner awarded to Borussia Dortmund after Wouter Burger concedes.
48
Update Update
Maximilian Beier of Borussia Dortmund is caught offside.
45
Update Update
Bernardo from TSG Hoffenheim committed a foul.
45
Update Update
Marcel Sabitzer from Borussia Dortmund was awarded a free kick on the right wing.
45
Update Update
Foul by Bazoumana Touré of TSG Hoffenheim.
45
Update Update
Julian Ryerson of Borussia Dortmund won a free kick on the right wing.
45
Update Update
The second half begins with the score at TSG Hoffenheim 1, Borussia Dortmund 0.
45
Update Update
Offside called against TSG Hoffenheim. Fisnik Asllani is offside.
45
Update Update
Nico Schlotterbeck from Borussia Dortmund committed a foul.
45
Update Update
Fisnik Asllani from TSG Hoffenheim won a free kick in defense.
45
Update Update
The first half ends with TSG Hoffenheim leading Borussia Dortmund 1-0.
45
Update Update
The fourth official has indicated there will be 6 minutes of added time.
44
Attempt Attempt
Bernardo's left-footed shot from outside the box is blocked. Bazoumana Touré provided the assist with a header.
44
Update Update
Vladimír Coufal from TSG Hoffenheim misses a chance, shooting with his right foot from the right side of the box, but the ball goes high.
42
Substitution Substitution
Substitution for Borussia Dortmund: Ramy Bensebaini replaces Niklas Süle due to injury.
42
GOAL! GOAL! Important
Goal! TSG Hoffenheim 1, Borussia Dortmund 0. Andrej Kramaric scores for TSG Hoffenheim with a right-footed shot into the right corner.
39
Update Update
VAR decision results in a penalty for TSG Hoffenheim.
37
Update Update
There is a delay in the match due to an injury to Niklas Süle of Borussia Dortmund.
37
Attempt Attempt
Andrej Kramaric's left-footed shot from outside the box is blocked. Fisnik Asllani provided the assist.
37
Update Update
Niklas Süle of Borussia Dortmund concedes a penalty for a handball in the penalty area.
35
Corner Corner
Corner awarded to TSG Hoffenheim after a concession by Julian Ryerson.
31
Update Update
Carney Chukwuemeka of Borussia Dortmund won a free kick in defense.
31
Attempt Attempt
Tim Lemperle's right-footed shot from the center of the box is blocked. The assist came from Wouter Burger.
31
Yellow Card Yellow Card Important
Wouter Burger of TSG Hoffenheim receives a yellow card.
31
Update Update
Foul committed by Bernardo for TSG Hoffenheim.
29
Corner Corner
Waldemar Anton of Borussia Dortmund attempts a header from the right side of the box, but Oliver Baumann of TSG Hoffenheim makes a save in the top left corner. The assist comes from Julian Ryerson.
28
Corner Corner
Corner awarded to Borussia Dortmund after Wouter Burger concedes.
26
Corner Corner
Andrej Kramaric from TSG Hoffenheim attempts an attack with a left-footed shot from the center of the box, but it's saved in the left corner by Gregor Kobel of Borussia Dortmund. The assist came from Vladimír Coufal.
23
Update Update
Wouter Burger of TSG Hoffenheim commits a foul.
23
Update Update
Andrej Kramaric from TSG Hoffenheim won a free kick in defense.
23
Update Update
Carney Chukwuemeka of Borussia Dortmund won a free kick in defense.
23
Update Update
Jobe Bellingham from Borussia Dortmund committed a foul.
22
Update Update
Fouled by Bazoumana Touré of TSG Hoffenheim.
22
Update Update
Marcel Sabitzer from Borussia Dortmund earned a free kick on the right wing.
21
Update Update
Maximilian Beier of Borussia Dortmund commits a foul.
21
Update Update
Vladimír Coufal from TSG Hoffenheim won a free kick in defense.
18
Update Update
Daniel Svensson of Borussia Dortmund won a free kick in defense.
18
Update Update
Vladimír Coufal from TSG Hoffenheim committed a foul.
16
Update Update
Fábio Silva from Borussia Dortmund won a free kick in the attacking area.
16
Update Update
Wouter Burger from TSG Hoffenheim committed a foul.
16
Update Update
Offside called against TSG Hoffenheim. Bazoumana Touré is offside.
16
Update Update
Offside called against TSG Hoffenheim. Bazoumana Touré is offside.
14
Attempt Attempt
Albian Hajdari from TSG Hoffenheim has a left-footed shot from outside the box, but it is blocked.
13
Attempt Attempt
Missed chance. Daniel Svensson of Borussia Dortmund heads the ball from a few meters out, but it's very close to the goal.
10
Update Update
There is a delay in the match due to an injury to Gregor Kobel of Borussia Dortmund.
10
Update Update
Offside called against TSG Hoffenheim. Bazoumana Touré is offside.
9
Update Update
Vladimír Coufal from TSG Hoffenheim won a free kick on the right wing.
9
Update Update
Maximilian Beier of Borussia Dortmund commits a foul.
7
Update Update
Fisnik Asllani from TSG Hoffenheim committed a foul.
7
Update Update
Marcel Sabitzer of Borussia Dortmund won a free kick in defense.
6
Attempt Attempt
Tim Lemperle of TSG Hoffenheim hits the bar with a right-footed shot from the right side of the box, assisted by Wouter Burger's cross.
5
Update Update
Andrej Kramaric from TSG Hoffenheim won a free kick in the defensive area.
5
Update Update
Nico Schlotterbeck from Borussia Dortmund commits a foul.
3
Update Update
Maximilian Beier of Borussia Dortmund is flagged for offside.
1
Corner Corner
Corner awarded to TSG Hoffenheim after being conceded by Niklas Süle.
1
Attempt Attempt
Fisnik Asllani's left-footed shot from outside the box is blocked. Ozan Kabak provided the assist.
1
Attempt Attempt
Missed chance. Fisnik Asllani from TSG Hoffenheim shot with his right foot from the right side of the box but missed to the left. Ozan Kabak provided the assist.

CONCLUSION

Structural assessment: TSG Hoffenheim exhibited a significant deviation from the pre-match structural baseline. Efficiency outcome: Possession-adjusted chance creation finished in line with projected levels. Result alignment: The final score was consistent with the pre-match probability model. Market alignment: The match result was within the projected probability range.

TSG Hoffenheim vs Borussia Dortmund preview with tactical analysis, xG context, lineup signals, and data-backed betting insights for faster decisions.

Use this page as a quick-read snapshot first, then continue to deep stats and methodology references below.

How We Build This Analysis

BestPreviews combines tactical context, lineup quality, xG trends, and form data across competitions. Read the full methodology and FAQ.