Ali Alipour scored an early goal for Persepolis but Kamal Kamyabinia was sent off in the 12th minute for a dangerous tackle on Waleed Bakshwan.
Soon after, the Saudi Arabian team put Persepolis under pressure and Saleh Al Amri equalized the match in the 52nd minute.
Al Ahli could not break Persepolis’ resistance and the Iranian team scored in the 83rd minute with a man down.
First Al Ahli captain Motaz Hawsawi handled the ball in an attempt to clear off his line and the referee awarded a penalty for Persepolis and sent him off.
Substitute Godwin Mensha converted the penalty-kick to restore Persepolis’ lead and Mahdi Taremi added a second from the spot in added time to put the win beyond doubt.
Persepolis will meet Al Hilal of Saudi Arabia in ACL semis.