Rob Page’s side struggled to find any rhythm throughout the game and were forced to play the last part of the game with 10 men after Wayne Hennessey was sent off.
Iran have three points after two games ahead of the clash against United States while Wales remain on one point.
There were off-field incidents before the game as Iranian pro-government fans harassed anti-government supporters outside the stadium.
In contrast to their stance against England, the Iranian players decided to sing the national anthem amid loud jeering from the Iran fans in the ground.
Less than five minutes later, Iran had the ball in the back of the net through Ali Gholizadeh but VAR ruled out the effort for offside.
The game ended goalless at half time which has now happened in the last five matches at the World Cup.
Iran were the better side after the break and struck the woodwork twice in the matter of seconds.
Sardar Azmoun was put through on goal but his effort hit the post. The ball then fell to Gholizadeh and his curling shot struck the other post before Hennessey stopped Azmoun’s rebound.
Hennessey was called into action once again after 73 minutes as he produced an excellent save to deny Saeid Ezatolahi.
However, Hennessey’s game was ended prematurely after he was shown a red card after a high challenge on Mehdi Taremi with five minutes remaining.
The goalkeeper was initially shown a yellow card but the referee overturned his decision after a VAR check.
Iran grabbed a goal in the 98th minute when Cheshmi struck a stunning strike from the edge of the box.
Rezaeian then wrapped up the points after a quick counter attack to clip the ball over substitute goalkeeper Danny Ward.