Delivery of the S-300s was cancelled in 2010 after the UN imposed sanctions on Iran over its nuclear programme.
But the Russian president gave the go-ahead after Tehran struck an interim deal with world powers to curb nuclear activities in exchange for sanctions relief.
The US and Israel have criticised the news.
The $800m (£545m) contract to deliver the system was heavily criticised at the time by Israel and the US, who feared it could be used to protect Iranian nuclear sites from air strikes.
When it was cancelled, Iran filed a lawsuit seeking billions of dollars in damages.
Russia's Foreign Minister Sergey Lavrov said in a statement that the sale was put on hold "entirely voluntarily" to aid the talks on Iran's nuclear programme.
But the Russian president gave the go-ahead after Tehran struck an interim deal with world powers to curb nuclear activities in exchange for sanctions relief.
The US and Israel have criticised the news.
The $800m (£545m) contract to deliver the system was heavily criticised at the time by Israel and the US, who feared it could be used to protect Iranian nuclear sites from air strikes.
When it was cancelled, Iran filed a lawsuit seeking billions of dollars in damages.
Russia's Foreign Minister Sergey Lavrov said in a statement that the sale was put on hold "entirely voluntarily" to aid the talks on Iran's nuclear programme.