Ibrahima Toure gave the table-toppers a first-half lead but Ehsan Hajsafi's own goal levelled the scores three minutes after the restart.
But Mohsen Bengar restored the visitors' lead with 20 minutes remaining and Toure's 80th-minute strike rounded off the win.
Fifth-placed Perspolis needed a last-minute Shpejtim Arifi goal to see off rock-bottom Steel Azin. Mojtaba Zare Sholi gave Perspolis a 22nd-minute lead which was cancelled out before half-time by Siavash Akbarpour.
Malavan leapfrogged Foolad into sixth place after contrasting results for the two sides.
Mehrdad Oladi's brace guided Malavan to a 3-0 win over Pas-Hamedan, Mohsen Mosalman also on the scoresheet, while Foolad went down 2-0 at Shahin. Ivan Petrovic and Abbas Porkhosravani scored the goals for the latter.
Sanat Naft beat Peykan 2-1, Ali Mombeini and Levon Pachajyan with the goals before Zoltan Harsanyi's last-minute response.
Alireza Mirshafieian's equaliser earned Saba Battery a home draw with Mes, for whom Milad Fakhraldini had opened the scoring, while Saipa drew 0-0 with Naft Tehran.