The Reds' captain, Karim Baqeri, scored the opener on Alireza Mohammad's cross after 35 minutes. 25,000 spectators attended the game at Tehran's Azadi Stadium on Thursday evening.
The visitors, coached by Farhad Kazemi, then netted the equalizer through Davoud Daneshdoust just before half time.
The 36-year-old Baqeri, however, headed in the winner in the 55th minute to get the maximum three points for the hosts.
"We couldn't have won the game without Karim Baqeri," said Persepolis boss, Zlatko Kranicar.
"He is a great player and scored two valuable goals for his team today," he added.
The victory moved Persepolis to fourth place in the table with 26 points. Sepahan leads the standings on 28 points followed by Esteqlal with 27.