Army sappers were defusing mines and bombs planted by IS in the city's ancient ruins, a UNESCO world heritage site where the jihadists sparked a global outcry with the systematic destruction of treasured monuments.
"After heavy fighting during the night, the army is in full control of Palmyra -- both the ancient site and the residential neighbourhoods," a military source told AFP. IS fighters pulled out, retreating towards the towns of Sukhnah and Deir Ezzor to the east.
IS overran the Palmyra ruins and adjacent modern city in May 2015. It has since blown up two of the site's treasured temples, its triumphal arch and a dozen tower tombs, in a campaign of destruction that UNESCO described as a war crime punishable by the International Criminal Court.
The jihadists used Palmyra's ancient amphitheatre as a venue for public executions, including the beheading of the city's 82-year-old former antiquities chief. The oasis city's recapture is a strategic as well as symbolic victory for President Bashar al-Assad, since it provides control of the surrounding desert extending all the way to the Iraqi border.
IS, behind a string of attacks in the West including last week's Brussels bombings, is under growing pressure from Syrian and Iraqi military offensives to retake key bastions in its self-proclaimed "caliphate".
On Thursday, the Iraqi army announced the launch of an offensive to recapture second city Mosul, held by the jihadists since June 2014. IS lost at least 400 fighters in the battle for Palmyra, said the Syrian Observatory for Human Rights, a monitoring group.
"That's the heaviest losses that IS has sustained in a single battle since its creation" in 2013, Observatory director Rami Abdel Rahman said. "It is a symbolic defeat for IS comparable with that in Kobane," a town on the Turkish border where Kurdish fighters held out against a months-long siege by IS in 2014-15, he added.
Russian forces, which intervened in support of longtime ally Assad last September, have been heavily involved in the offensive to retake Palmyra despite a major drawdown last week.
Russian warplanes conducted more than 40 combat sorties in just 24 hours from Friday to Saturday, targeting "158 terrorist" positions, according to the Russian defence ministry.