In the heavily mined approaches to the city, they met with fierce resistance as IS unleashed suicide truck bombs, rockets and mortars. In other areas, the militants retreated, and in at least one village civilians rose up and overthrew them before the troops arrived.
IS meanwhile launched a massive assault on the city of Kirkuk, some 170 kilometers (100 miles) away, killing at least 80 people in two days of clashes in an apparent attempt to divert Iraqi forces.
The Iraqi army's 9th Division pushed into the nearby town of Hamdaniyah and said it captured the main government compound.
To the north, Kurdish forces known as the peshmerga have driven IS out of several villages and, along with Iraqi special forces, have encircled the town of Bashiqa.
More From This Section
Progress has been slower to the south of Mosul, where troops have only advanced to around 50 kilometers (30 miles) from the city.
The US-led coalition is providing airstrikes and ground support, with more than 100 American soldiers embedded with Iraqi units and hundreds more in staging bases near the front lines.
An American soldier was killed by a roadside bomb near Bashiqa, marking the first US casualty of the operation.
The peshmerga said yesterday that 25 of its fighters have been killed since the operation began. The Iraqi military has not released any casualty figures.
Two Iraqi television reporters have also been killed, one while covering the fighting south of Mosul and the other while covering clashes in Kirkuk.
The UN and aid organisations say some 5,000 civilians have been displaced since the operation began, a tiny fraction of the 1 million people remaining inside Mosul.