Where does Bangladesh's 1999 World Cup win over Pakistan rank in the list of greatest upsets?
A definitive list of upsets in Tests and ODIs, based on the strengths of the two teams, their recent form, and the margin of victory

Kusal Perera's 153 not out in Durban gave Sri Lanka an unexpected win over South Africa in 2019 • Getty Images
Upsets in Test matches
South Africa 227 (Anton Murray 51) and 388 (John Waite 62, Russell Endean 162) beat Australia 243 (Hugh Tayfield 6 for 84) and 290 (Tayfield 7 for 81) by 82 runs
An inexperienced and below-par South Africa faced a strong Australian side. Despite a TSI differential of 33.5, a single win in their last ten Tests, little success in their away Tests, and strong recent form for Australia (almost all wins), South Africa pulled off a miraculous win. After similar first innings, Russell Endean's magnificent unbeaten 162 saw South Africa set a difficult target of 373. Hugh Tayfield's match haul of 13 wickets won the match for South Africa. On a numbers basis, this is the greatest upset in the history of the game.
Australia 471 for 9 (Kepler Wessels 173, Allan Border 69) beat West Indies 163 (Bob Holland 6 for 54) and 253 (Holland 4 for 90) by an innings and 55 runs
This was one of those rare periods when Australia had an overall losing record in both recent-form classifications. They had lost six out of their ten most recent matches, and three out of five location matches. West Indies were sweeping everything in their path and had nine wins and a draw in their last ten Tests. They had a fearsome quartet of pace bowlers and a very strong batting line-up. The TSI differential was 34.5. Led by Kepler Wessels' 173, Australia put up a huge total and dismissed the strong West Indies batting line-up for meagre totals. Bob Holland, the legspinner who was pushing 39, was the bowling hero. However, let us not forget that this was a home Test for Australia. Save for that, this Test would be on top of this list.
Australia 116 and 60 beat England 53 (Charlie Turner 5 for 27) and 62 (Turner 5 for 36, JJ Ferris 5 for 26) by 61 runs
A hopelessly outclassed Australia, with three debutants, put it across England, away from home. The TSI differential was over 30. The recent form of the two teams could not have been more different. Australia won one of the lowest-scoring matches ever by 61 runs, which was a huge margin in a match with a Match RpW of 7.3. Charlie Turner and JJ Ferris shared 18 wickets between them. No batsman went past 24. Australia's last-wicket stand in the first innings, which realised 34 runs and was the biggest partnership of the match, probably won it for them.
Afghanistan 342 (Rahmat Shah 102, Asghar Afghan 92, Rashid Khan 51) and 260 (Ibrahim Zadran 87, Asghar Afghan 50) beat Bangladesh 205 (Rashid 5 for 55) and 173 (Rashid 6 for 49) by 224 runs
Bangladesh might not be a top Test-playing nation but they are quite formidable at home. No one would have expected newcomers Afghanistan to demolish them. A substantial TSI differential and my consideration of their unplayed matches as losses helped them. The eight matches they did not play are taken as losses. It was the genius of Rashid Khan that won the Test for them after No. 3 Rahmat Shah laid the foundation. Afghanistan batted well in both innings.
Sri Lanka 191 (Kusal Perera 51) and 304 for 9 (Perera 153*) beat South Africa 235 (Vishwa Fernando 4 for 62) and 259 (Lasith Embuldeniya 5 for 66, Fernando 4 for 71) by one wicket
How can anyone forget this match? It contained what is by my reckoning the greatest Test innings ever. It was, arguably, the greatest win by a team. Unfortunately, Ben Stokes' innings and England's win later in the year overshadowed this Test and innings. Let us put things in perspective. Sri Lanka were playing away against a great bowling attack. They needed over 300 runs to win. They were 52 for 3, 110 for 5 and 226 for 9. Kusal Perera scored 153* and took them to a most unexpected win. The TSI differential was over 35 and South Africa were coming off five straight wins at home. If the match situations were part of the equation, this could very well have been be the greatest match ever. But I have no problems in reducing the margin-related points for Sri Lanka.
England 364 (Allan Lamb 132, Robin Smith 57) and 41 for 1 beat West Indies 164 (Angus Fraser 5 for 28) and 240 (Gladstone Small 4 for 58, Devon Malcolm 4 for 77) by nine wickets
A powerful West Indies side, with a fearsome bowling quartet and very good batsmen, in Kingston, is not a team anyone would want to take on - especially not an average English team with two debutants. This was a huge upset win. The key was the dismissal of West Indies for 164 on the first day. Then Allan Lamb anchored the England innings. A comfortable win ensured the place of this match in this table.
West Indies 350 for 6 (Freddie Martin 123*, George Headley 105, Jackie Grant 62) and 124 for 5 dec beat Australia 224 (George Francis 4 for 48) and 220 (Herman Griffith 4 for 50) by 30 runs
How can a team with Woodfull, Ponsford, Bradman, Kippax, McCabe, Oldfield, Grimmett and Ironmonger lose to West Indies, who were relatively new to Test cricket at the time, at home? It happened, and so the Test finds a place here. Freddie Martin and George Headley scored hundreds. Then the fast bowlers took over and West Indies were winners despite setting Australia a low target of 251. This win owed a lot to Jackie Grant's aggressive captaincy - he made two declarations.
Sri Lanka 154 and 197 for 2 (Oshada Fernando 75*, Kusal Mendis 84*) beat South Africa 222 and 128 (Suranga Lakmal 4 for 39) by eight wickets
This was the match after the Perera classic. It was as unexpected as the previous win. Everyone expected South Africa to bounce back. Instead, they were simply vanquished. A huge eight-wicket win meant that Sri Lanka did not lose out on the Team Performance points parameter. For South Africa to lose after taking a good lead was unbelievable. Since both the Tests of the South Africa-Sri Lanka series of 2018-19 found their place in this list, this is, almost inarguably, the greatest upset series win by a team. Sri Lanka would have been expected to lose 0-2 but ended up winning by that margin. I cannot think of any other series like this.
England 380 (Graham Gooch 56, Mike Atherton 50, Graeme Hick 80, Alec Stewart 76) and 313 (Gooch 79, Mark Ramprakash 64) beat Australia 303 (Angus Fraser 5 for 87) and 229 (Steve Watkin 4 for 65) by 161 runs
This was an Australian team back to its winning ways. They were filled with match-winners in both departments. England had a single draw and nine losses in their last ten Tests. Australia were riding a wave, especially away. England won because of consistent batting right through. They had ten scores between 30 and 80. Their fast bowlers shared the wickets. It was indeed a team win, albeit by a home team, but no less impressive.
Australia 491 (Bill Woodfull 102, Don Bradman 123, Alan Fairfax 65) and 287 for 5 (Jack Ryder 57) beat England 519 and 257 (Tim Wall 5 for 66) by five wickets
Australia had Bradman, but in his infancy as a Test player, and three debutants. Their last Test win was nine matches ago. England had won their last seven matches and last four away matches - all in the current series. A whitewash was expected. And the first-innings score of 519 seemed to confirm this. Then Bradman's and Woodfull's hundreds helped them come close to England's score. Clarrie Grimmett and Tim Wall ran through England, giving Australia a target of 287, which they got to thanks to a number of good scores after being in trouble for a while.
England 265 (Wilfred Rhodes 61, JW Hearne 114) and 219 for 2 (Jack Hobbs 126) beat Australia 184 (Sydney Barnes 5 for 44) and 299 (Frank Foster 6 for 91) by eight wickets
Australia were the stronger team by a comfortable margin. The batsmen were in good form and their home record was very good. Their recent form was also good. England were going through a rough patch, especially away. England's huge win gave them a coveted place in this list.
England 362 (Mark Butcher 124, Nasser Hussain 75, Alec Stewart 71) and 452 for 9 (Michael Vaughan 183, Hussain 72) beat Australia 363 (Matthew Hoggard 4 for 92) and 226 (Andy Caddick 7 for 94) by 225 runs
Australia had bounced back from their 2001 loss to India and were on a seven-Test winning streak. England had lost their last four Tests in the series and this was again expected to be a 0-5 whitewash. The two first innings finished a run apart. Then Michael Vaughan's wonderful 183 propelled them to a huge score and a big target for Australia. Andy Caddick, bowling in his last innings, took 7 for 94 and led England to a completely unexpected win.
For ODIs, the first six parameters are identical as for Tests. The seventh parameter is different. In a limited-overs contest, the margin of a win is not that important. Another, more important, factor is to be considered instead: we cannot ignore the contextual importance of the match. When low-placed India faced the might of West Indies in 1983, the fact that it was a World Cup final was very significant. Hence, the seventh parameter is reflective of match importance. A World Cup final secures ten points and other matches correspondingly fewer. This is also a way to recognise the upsets in really important matches.
Bangladesh 223 for 9 (Akram Khan 42) beat Pakistan 161 (Khaled Mahmud 3 for 31) by 62 runs
The greatest upset in the history of ODI cricket was Bangladesh's dismantling of Pakistan in 1999. Bangladesh were yet to play a Test match. Pakistan had Saeed Anwar, Shahid Afridi, Ijaz Ahmed, Inzamam-ul-Haq, Saleem Malik, Azhar Mahmood, Moin Khan, Wasim Akram, Saqlain Mushtaq, Waqar Younis and Shoaib Akhtar: one of the strongest teams ever. Bangladesh scored 223 for 9. Everyone expected a walk in the park for Pakistan. They lost five wickets for 43 and only some late-order resistance took them to 167. If the world did not stand still, it should have. Pakistan's recent form was eight wins and five wins respectively. Bangladesh had nine losses and four losses respectively. It was a World Cup group match. The result is that this is greatest upset ever. Not many would question this.
Bangladesh 250 for 5 (Mohammad Ashraful 100, Habibul Bashar 47) beat Australia 249 for 5 (Tapash Baisya 3 for 69) by five wickets
A few years later, in a NatWest series match in England, Bangladesh put it across an Australia team that had Adam Gilchrist, Matthew Hayden, Ricky Ponting, Michael Clarke, Michael Hussey, Jason Gillespie, Brad Hogg and Glenn McGrath, among others. This time, Australia were coming off nine wins and five wins (location). Bangladesh had five away losses. Gilchrist and Ponting were dismissed for a total of one run and Australia did not recover. They set Bangladesh 250 to win and that was achieved with ease, thanks to a century from Mohammad Ashraful. I do not think there will be many complaints with this match being at No. 2.
South Africa 288 for 2 (Kepler Wessels 90, Peter Kirsten 86*, Adrian Kuiper 63*) beat India 287 for 4 by eight wickets
I can see some people wondering: how is a South Africa win an upset? The reason is that this was only South Africa's third match on their return to international cricket, and they are treated at par with a new team - which they were in ODIs. In any case, this was a very strong India team playing at home. India made a big score but this was overhauled with contemptuous ease by South Africa. The wide margin of the win was also instrumental in getting South Africa a high place.
India 183 (Kris Srikkanth 38) beat West Indies 140 (Mohinder Amarnath 3 for 12, Madan Lal 3 for 31) by 43 runs
The main reason why this match is placed so high is because it was a World Cup final. Of course, there was a substantial TSI differential. Of course, West Indies were on a roll. However, it can be seen that India were not doing badly. They had won their last three matches. But there is no denying that this was, arguably, the most significant upset in the history of ODI cricket. Where would Indian cricket be if India had lost? And what further heights would West Indies have reached if they had won?
South Africa 171 for 1 (Kepler Wessels 81, Peter Kirsten 49) beat Australia 170 for 9 (Alan Donald 3 for 34) by nine wickets
This was the next match South Africa played after their win in Delhi, and they did a repeat performance. Restricting a strong Australian team for a low total and chasing it down with elan. Not as dominating a win as the previous one but enough to give them a leg up in the upset quotients. In most of these matches, the TSI differential is over 20.
Sri Lanka 172 for 4 (Arjuna Ranatunga 45) beat Pakistan 170 (Rumesh Ratnayake 5 for 32, Ramanayake 3 for 29) by six wickets
In Sharjah, Pakistan were pretty strong. Though I have treated the UAE as an away location for all teams, it was virtually a home for Pakistan. A full-strength Pakistan were beaten comprehensively by a Sri Lankan team with not many star players. Rumesh Ratnayake and Champaka Ramanayake dismissed Pakistan for 170 and the batsmen chased the target comfortably. Pakistan's bowling attack was one of their best ever.
Sri Lanka 206 for 6 (Athula Samarasekera 76, Asanka Gurusinha 74) beat Pakistan 205 for 5 by four wickets
This time Sri Lanka put it across Pakistan in Pakistan in a 40-over match. Surprisingly, Pakistan did not press the pedal and finished with a below-par 205. This proved to be inadequate, despite a late scare for Sri Lanka.
New Zealand 199 for 8 (Chris Harris 63*) beat Australia 176 (Chris Cairns 3 for 42, Shane Bond 3 for 53) by 23 runs
This time it was the turn of the unfancied New Zealanders to score one over their stronger neighbours - and in Australia at that. From 94 for 7, New Zealand recovered to a total of 199, thanks to Chris Harris and Daniel Vettori, which was still under-par. Australia's batting was very strong, and they were coming in off good recent form, but they folded against Shane Bond, Chris Cairns and Vettori.
England 220 for 5 (Chris Broad 65, Tim Robinson 83) beat Pakistan 217 for 9 (David Capel 3 for 38) by five wickets
An England team without a major match-winner defeated Pakistan in Sharjah. Pakistan paid for shoddy running between the wickets (there were three run-outs) and reached a below-par 217 in 50 overs. Tim Robinson anchored the chase and England won comfortably.
Kenya 166 beat West Indies 93 (Maurice Odumbe 3 for 15, RW Ali 3 for 17) by 73 runs
This was truly one of the greatest upsets in World Cup history. A raw and inexperienced Kenya, playing in their fifth ODI, defeated the mighty West Indies despite being bowled out for 166. The key wicket was that of Brian Lara. I cannot forget the expression on wicketkeeper Tariq Iqbal's face when he held on to Lara's nick. It was a mix of sheer disbelief, incredulity and joy. A strong West Indies team folded for 93. Their recent form was indifferent and this factor prevented this match from finishing higher up the table.
Sri Lanka 180 for 6 (Asanka Gurusinha 66) beat West Indies 176 for 9 by four wickets
In the 1980s and '90s, Sri Lanka were a giant killer and had many scalps to their credit. This match was in the Nehru Cup in India. A strangely subdued West Indies played as if they were saving a Test and scored at 3.5 runs per over. Desmond Haynes and Viv Richards scored 63 runs in 140 balls. Sri Lanka mounted a competent chase and were never troubled.
India 262 for 8 (Yashpal Sharma 89) beat West Indies 228 (Roger Binny 3 for 48, Ravi Shastri 3 for 26) by 34 runs
This was the earlier match in the tournament between these two sides, which India won. As such, its match importance index is quite low. But other factors had a say in it making it to the list. And let us not forget that the recent-form values were somewhat different for both teams. It is fascinating to study the differences in recent-form patterns for the two matches, this one and the final. Nevertheless, it was a stunning upset and maybe the reason why India felt confident 16 days later, 400 kilometres down south, despite being dismissed for 183.
Anantha Narayanan has written for ESPNcricinfo and CastrolCricket and worked with a number of companies on their cricket performance ratings-related systems