Prime Minister Haider al-Abadi went on state television to announce that his forces were in control of the city except for a few small pockets of jihadists.
They met limited resistance from IS fighters, who were fleeing the city, the commanders told AFP, leaving the organisation on the brink of losing one of the most emblematic strongholds in its two-year-old “caliphate”.
It is the latest setback for the jihadists who have also lost territory in neighbouring Syria and in Libya in recent weeks.
“We promised you the liberation of Fallujah and we retook it. Our security forces control the city except for small pockets that need to be cleared within the coming hours,” Abadi said.
Military commanders explained that the forces had raised the flag over the government compound in the centre of the city.
“The liberation of the government compound, which is the main landmark in the city, symbolises the restoration of the state’s authority” in Fallujah, federal police chief Raed Shaker Jawdat told AFP.
The overall commander of the operation, Lieutenant General Abdulwahab al-Saadi, said that “Iraqi forces have now liberated 70 percent of the city”.
Significant parts of northern Fallujah, where thousands of civilians are believed to remain, have yet to be retaken.
In December 2015, Abadi announced the liberation of Ramadi, the capital of Anbar province where Fallujah lies, but it took several more weeks of fighting to establish full control.
In the deserted, recently re-conquered neighbourhoods of the insurgent bastion known in Iraq as the “City of Mosques”, elite forces were consolidating positions, stocking up on food and weapons.
Dozens of bodies of dead IS fighters were left to rot under blankets amid the rubble of homes destroyed by air strikes, rockets or controlled explosions of the hundreds of bombs the jihadists themselves laid across the city.
Fallujah, just 50 kilometres (30 miles) west of Baghdad, is one of IS’s key historical bastions and its loss would leave Mosul as the only major Iraqi city under its control.
The US-led coalition, which has carried out air strikes in support of the Fallujah operation, had initially favoured focusing efforts on recapturing Mosul.
Abadi, who was facing huge political pressure over the reform of his own government when he declared the launch of the Fallujah operation, vowed Friday that Mosul was the next target.
In the hours before the latest push into the heart of Fallujah, Iraqi forces retook several neighbourhoods in quick succession.
“This operation was done with little resistance from Daesh,” Saadi said, using an Arabic acronym for IS.