The incident took place after police tear-gassed supporters who invaded the pitch late on Saturday evening, BBC reported.
It is one of the world’s worst stadium disasters after local team Arema FC lost 2-3 to bitter rivals Persebaya Surabaya in East Java.
The country’s Chief Security Minister said that spectators exceeded the stadium’s 38,000 capacity by around 4,000, BBC reported.
President Joko Widodo has ordered that all matches in Indonesia’s top league must be stopped until an investigation is done.
Videos show fans running on to the pitch after the final whistle.
Police then fired tear gas, leading to a crowd stampede and cases of suffocation, said Nico Afinta, Police Chief in East Java.
“It had gotten anarchic. They started attacking officers, they damaged cars,” he said, adding that two police officers were among the deceased.
“We would like to convey that not all of them were anarchic. Only about 3,000 who entered the pitch,” he said.
Fleeing fans “went out to one point at the exit. Then there was a build-up, in the process of accumulation, there was shortness of breath, lack of oxygen”, he added.
Videos on social media show fans clambering over fences to escape. Separate videos appear to show lifeless bodies on the floor.
FIFA, the world’s governing football body, states that no “crowd control gas” should be carried or used by stewards or police at matches.
The Indonesian football association (PSSI) said it had launched an investigation, adding that the incident had “tarnished the face of Indonesian football”.
Violence at football matches is not new in Indonesia, and Arema FC and Persebaya Surabaya are long-time rivals.
Persebaya Surabaya fans were banned from buying tickets for the game because of fears of clashes.
But Chief Security Minister Mahfud MD posted on Instagram that 42,000 tickets had been sold for the match at the Kanjuruhan stadium.
President Widodo called for this to be the “last soccer tragedy in the nation” after ordering that all Liga 1 games should be paused pending an investigation.
The stampede is the latest in a long line of disasters at stadiums.
In 1964, a total of 320 people were killed and more than 1,000 injured during a stampede at a Peru-Argentina Olympic qualifier in Lima.
In 1985, 39 people died and 600 were hurt at the Heysel stadium in Brussels, Belgium, when fans were crushed against a wall that then collapsed during the European Cup final between Liverpool (England) and Juventus (Italy).
In the UK, a crush developed at the Hillsborough stadium in Sheffield, resulting in the deaths of 97 Liverpool fans attending the club’s FA Cup semi-final against Nottingham Forest.