Syrian government forces look set to recover a strategic town from rebels in a major Russian-backed offensive into the opposition's last major stronghold.

Capturing Khan Sheikhoun would be an important gain for President Bashar al-Assad into the northwestern region where his bid to recover "every inch" of Syria has run into complications including Turkish forces on the ground.

Nearly 100 people were killed in Khan Sheikhoun in 2017 when it was bombed with sarin poison gas.

 It was one of the deadliest chemical weapons attacks of the war and prompted a US missile strike against a Syrian air base.

Syrian state TV channel al-Ikhbariya, in a broadcast from the edge of Khan Sheikhoun, said government forces were fighting militants who remained inside after widening their control and seizing a highway running through the town.

"The Syrian Arab army took blocks of buildings in Khan Sheikhoun and continues its operations," al-Ikhbariya's reporter said, standing near a road she identified as a section of the highway that links Damascus to Aleppo.

An organisation that monitors the war and a pro-Damascus military source said insurgents had withdrawn from Khan Sheikhoun overnight. 

But the main insurgent group in the area said rebels still held part of the town and fighting continued.

"There are some pockets (of rebel fighters) and explosive devices, there are a few who refuse to withdraw and want to die," the pro-Damascus source told Reuters. 

The town was under army control after the rebels were caught in a pincer movement and fled, however, the source added.

The Syrian Observatory for Human Rights, a British-based war monitoring group, said rebels had withdrawn from their last piece of territory in neighbouring Hama province.

The most powerful insurgent group in the area, the jihadist Hayat Tahrir al-Sham, denied this and said the battle continued.

In a statement, Hayat Tahrir al-Sham said rebels still held part of Khan Sheikhoun and nearby areas in northern Hama despite what it described as a redeployment in the town after fierce enemy bombardment.

Another rebel alliance, the Turkey-backed National Liberation Front, said bombardment in the northern Hama area had made its forces leave positions that had become difficult to supply and redeploy to others.

Turkish troops

The Observatory and the pro-Damascus military source said Syrian rebels had pulled back to a Turkish military position in the town of Morek, south of Khan Sheikhoun.

Turkey has established a dozen military positions in the area under agreements with Russia.

One of its main aims is to prevent another refugee influx. Some 3.6 million Syrian refugees already live in Turkey.

The pro-Damascus source said negotiations were under way between Turkey and Russia over the withdrawal of the Turkish position.

However Turkish Foreign Minister Mevlut Cavusoglu said Turkey would not remove the observation post near Morek, which a Turkish convoy was trying to reach yesterday when it came under attack.

After eight years of conflict, Mr Assad has defeated rebels across much of Syria helped by Russia and Iran.

Syrian government forces stepped up military operations against rebels in the northwest in late April.

The offensive has killed hundreds of people and forced hundreds of thousands of others to flee toward the Turkish border.

"A humanitarian disaster, which humanitarian agencies have been warning about for months, is unfolding in Idlib province," Rehana Zawar, Syria country director for the International Rescue Committee, said in an emailed statement.

"At least 45 schools have been impacted by the violence and 42 attacks on healthcare have been reported since the upsurge began," the IRC statement added.

Russia and Syria have said their forces are not targeting civilians and are instead targeting militants.