Iraqi government forces have entered central Kirkuk after taking key installations outside the disputed city from Kurdish fighters.
Thousands of people fled the city ahead of the Iraqi advance.
The Iraqi military moved into Kirkuk three weeks after the Kurdistan Region held a controversial independence referendum.
They are aiming to retake areas under Kurdish control since Islamic State militants swept through the region.
Residents of Kurdish-controlled areas, including Kirkuk, overwhelmingly backed secession from Iraq in a 25 September vote.
While Kirkuk is outside Iraqi Kurdistan, Kurdish voters in the city were allowed to take part.
Iraq’s prime minister, Haider al-Abadi, had denounced the vote as unconstitutional. But the Kurdistan Regional Government (KRG) insisted it was legitimate.
Mr Abadi said in a statement on Monday that the operation in Kirkuk was necessary to “protect the unity of the country, which was in danger of partition” because of the referendum.
“We call upon all citizens to co-operate with our heroic armed forces, which are committed to our strict directives to protect civilians in the first place, and to impose security and order, and to protect state installations and institutions,” he added.
On Monday, the Iraqi military said its units had taken control of the K1 military base, the Baba Gurgur oil and gas field, and a state-owned oil company’s offices.
The government in Baghdad said the Peshmerga had withdrawn “without fighting”. However, clashes were reported to the south, and the sound of gunfire was caught by a BBC cameraman as a team filmed near a checkpoint.
By afternoon, as thousands of people fled the city fearing impending clashes between the two sides, Iraqi military vehicles were rolling into the heart of Kirkuk. A picture shared on social media appeared to show Iraqi forces sitting in the governor’s office.
Forces pulled down the Kurdish flag which had been flying alongside the national flag, according to Reuters.
Mr Abadi had ordered the flag to fly over all disputed territories.
While some celebrated in the streets, the Peshmerga General Command said Iraq’s actions on Monday amounted to a “declaration of war” on the Kurdish people.
Meanwhile Turkey, which fears Kurdish independence in Iraq could lead to similar calls from its own Kurdish minority, praised Baghdad, saying it was “ready for any form of co-operation with the Iraqi government in order to end the PKK presence in Iraqi territory”.
The PKK – or Kurdistan Workers’ Party – is a Turkish-Kurdish rebel group which has been fighting for autonomy since the 1980s. It is considered a terrorist group by Turkey as well as by the EU and US.