Svitolina, a two-time former champion in Rome, having last lifted the trophy in 2018, will face Coco Gauff in the final.
"After so many years I'm happy to be again in the final," Svitolina said.
Swiatek's attacking game produced 28 winners, eight more than Svitolina, but it was undermined by 50 unforced errors as the Ukrainian stayed more composed to dominate the deciding set.
The seventh seed's run to the final also included a hard-fought quarter-final victory over second seed Elena Rybakina.
