Is 2–0 the most dangerous lead?
"Two-nil is the most dangerous lead in football." Over 10,000 Scottish league matches, a 2–0 half-time lead was won 92% of the time and lost about one time in forty.
Beginner
Contents
The claim
"Two-nil is the most dangerous lead in football."
Commentators say it, pundits nod along, and every fan can name a match where it came true.
Why people believe it
The story goes like this. At 2–0 the leading side relaxes and thinks the job is done. The other side has nothing to lose. Then one goes in, it's 2–1, the crowd senses it, and suddenly the momentum has swung. At 1–0 nobody relaxes, so the lead is somehow safer.
Those comebacks are unforgettable precisely because they are unusual. Nobody remembers the hundreds of 2–0 leads that were quietly seen out.
The data
Every Scottish Premiership and Championship match from 2000/01 to 2025/26 with both the half-time and full-time score: 10,471 matches, from football-data.co.uk.
The files record the score at half-time and at full-time, not when each goal went in. So this tests a 2–0 lead at half-time, which is where the saying is most often used. It can't test a 2–0 lead at other moments.
The method
Take every match where one side led at half-time. Look at it from the leading side's point of view, home or away, and count how often that side went on to win, draw or lose. Then compare a 2–0 lead with the other half-time scores.
The evidence
Sides leading 2–0 at half-time won 92.1% of their matches. They drew 5.4% and lost just 2.5%, about one time in forty. Sides leading 1–0 won 68.8% and lost 9.4%, nearly four times as often.
It holds wherever the match is played. Home sides 2–0 up at half-time won 93.1%; away sides 90.5%. The 95% range on the overall 92.1% is about ±1.5 points, so this isn't a fluke of a small sample.
What about 2–1?
The subtler version of the saying is about what happens when a 2–0 lead is cut to 2–1. The data can't follow a 2–0 that later becomes 2–1, but it can compare sides leading 2–1 at half-time with sides leading 1–0. They are almost identical: 67.8% won from 2–1, against 68.8% from 1–0. A lead of one goal is a lead of one goal. The goal conceded doesn't carry an extra penalty for "momentum" on top of the goal it took away.
The model agrees
The Hold the lead model knows nothing about momentum. It treats each side's goals in the second half as Poisson, at this league's real second-half rate of 1.49 goals a match between the two sides. It predicts:
| Half-time lead | Model: won | Reality: won |
|---|---|---|
| 1 goal | 68.4% | 68.7% |
| 2 goals | 90.3% | 92.0% |
| 3 goals | 97.8% | 99.3% |
In plain football
- The model gives each side 0.745 goals for the second half, half of the 1.49 the two sides score between them.
- A 2–0 lead is lost only if the trailing side outscores the leader by three or more in 45 minutes. That rarely happens.
- The model slightly under-rates big leads. It treats both sides as equal, but a side 2–0 down at half-time is usually the weaker one.
Verdict
Not supported. A 2–0 lead at half-time is far safer than 1–0: won 92% of the time and lost about one time in forty. The comebacks happen, and they're memorable, but they are exactly what makes them rare.
Caveats
- Half-time only. The data can't test a 2–0 lead at other moments, such as the 80th minute or the 20th.
- Weaker sides trail. Sides 2–0 down are more often the weaker team, which makes 2–0 look even safer than it would between equals. The model, which treats the sides as equal, still makes 2–0 safer than 1–0.
- Scottish top two divisions. Leagues with more goals per game could be a little less kind to leads, but the gap between 92% and 69% is far too big for that to reverse.
Reproduce the analysis
The results files are published by football-data.co.uk. Download them from there; they aren't rehosted on this site. Then:
import csv, glob
from collections import Counter
results = Counter()
for path in glob.glob("SC*.csv"):
with open(path, encoding="latin-1") as f:
for r in csv.DictReader(f):
if not all(r.get(c) for c in ("HTHG", "HTAG", "FTHG", "FTAG")):
continue
hh, ha, fh, fa = (int(r[c]) for c in ("HTHG", "HTAG", "FTHG", "FTAG"))
if (hh, ha) in ((2, 0), (0, 2)): # a 2-0 lead at half-time, either side
lead, trail = (fh, fa) if hh > ha else (fa, fh)
results["won" if lead > trail else "drew" if lead == trail else "lost"] += 1
total = sum(results.values())
print({k: f"{v / total:.1%}" for k, v in results.items()}, total, "matches")
Spotted a flaw in the method, or have a football claim you'd like tested? Suggest it on LinkedIn, where discussion of these articles happens.