Graphic television footage from the site of the attack showed many dead bodies lying on the bloodied road, close to where thousands of Hazara had been demonstrating over the route of a planned multi-million-dollar power line.
"Two fighters from Islamic State detonated explosive belts at a gathering of Shi'ites in the city of Kabul in Afghanistan," said a brief statement on the group's Amaq news agency.
If confirmed as the work of IS, the attack, among the most deadly since the US-led campaign to oust the Taleban in 2001, would represent a major escalation for a group hitherto largely confined to the eastern province of Nangarhar.
Officials in Afghanistan's main intelligence agency, the National Directorate for Security (NDS), said the attack was planned by an individual named Abu Ali, an IS militant.
They said three bombers were involved in the attack.
The Persian-speaking Hazara, estimated to make up about nine per cent of the population, are Afghanistan's third-largest minority but they have long suffered discrimination and thousands were killed during the period of Taleban rule.
The Taleban, a fierce enemy of IS, denied any involvement and saying on its website that the attack was "a plot to ignite civil war".
The attack succeeded despite tight security which saw much of the city centre sealed off before the demonstration, with stacks of shipping containers and other obstacles and helicopters patrolling overhead.
An Interior Ministry statement said 80 people had been killed and 231 wounded, with local hospitals straining to cope.
The worst previous attack against the Hazara was in December 2011, when more than 55 people were killed in Kabul during the Shi'ite festival of Ashura.
That attack was claimed by a Pakistani Sunni extremist group called Lashkar-e-Jhangvi.
President Ashraf Ghani declared a national day of mourning and vowed revenge, while the top United Nations official in Afghanistan, Tadamichi Yamamoto, condemned the attack as a war crime.
The United States offered assistance to investigate the attack.