Spain was pushed to the brink by Iran, but it earned the three points it desperately needed to feel good about its standing at the World Cup.
Diego Costa's breakthrough goal in the 54th minute was what Spain needed, and then it held on in the face of Iran's chances–including an apparent equalizer disallowed, a ruling confirmed by VAR–for a tense 1-0 win in Kazan. The win brings Spain level with Portugal atop Group B, with both favorites having four points and the same number of goals scored and allowed.
Iran went toe-to-toe with Spain at the start, conceding early possession, as expected, before carving out a couple of dangerous forays forward.
The fist half-chance for Spain came in the 10th minute, with David Silva curling in a teasing free kick that was just out of the reach of Gerard Pique in the center of the box.
Iran attempted a speculative chance in the 14th minute through Karim Ansarifard, which perhaps wasn't the worst idea given the howler David De Gea committed on one of Ronaldo's chances in the 3-3 opener. De Gea didn't have to be tested, though, as the long, low shot went well wide.
Silva put the match's first chance on goal in the 25th minute off a free kick from 25 yards out. It took a wicked deflection off the wall, but goalkeeper Alireza Beiranvand read it all the way and fortunately didn't have to move that much to make a clean catch.
Spain continued to extend its hold over the match, and Silva had another chance to break the deadlock, albeit in acrobatic fashion. Pique headed a cross back across goal, and Silva attempted a flying overhead kick from close range, putting his chance well over the crossbar.
Spain continued to dominate possession against an Iran team defending with numbers, refusing to break in the face of Spanish pressure. Silva came close against to cracking though in the 41st minute, when Isco crossed to the top of the six-yard-box. Silva momentarily had space, but his shot was quickly blocked by a sliding defender.
Silva had yet another opportunity that he thought was goal-bound, only for a strong deflection to turn his shot off course as Spain kept pushing for an opener prior to halftime.
It was more of the same as the second half began, and Spain came close to scoring on a corner kick. Sergio Busquets flicked on a header toward the far post, where Pique was lurking but couldn't quite get to the loose ball.
Moments later, Beiranvand was called into action to deny a long-range blast, which he did, and then, while on the ground, managed to swat away the rebound before Lucas Vazquez could pounce on the doorstep.
Iran thought it had scored on a rare foray forward through Ansarifard in the 51st minute, but the veteran missed by inches, hitting the side netting and goal support. That missed chance was compounded even further by what happened next on the other end. Andres Iniesta did the heavy lifting but Diego Costa got the final touch, turning and having a bit of fortune, as the ball hit off a defender's leg, then his own shin, before going in for the breakthrough in the 54th minute.
Iran thought it had an equalizer in the 64th minute, only for an offside call confirmed by VAR to disallow the goal. Saeid Ezatolahi had bundled home from close range off a free kick, but upon further review, when the ball was headed down into his path off the kick, he was in an offside position, thus nullifying the goal. The assistant referee had raised his flag for the initial offside call, with VAR confirming the offside.
Spain nearly got some breathing room minutes later off an interestingly worked corner kick, which resulted in an all-out scramble by the goal mouth. Beiranvand wound up smothering the ball on the line, dramatically ending the threat.
Iran continued to push for its equalizer when on the ball, and it nearly came in sensational fashion. Vahid Amiri nutmegged Pique before crossing to the far post, where Mehdi Tarami headed over the bar in the 81st minute.
Here were the lineups for both teams:
Here are the rosters for both sides:
Goalkeepers: Alireza Beiranvand (Persepolis), Rashid Mazaheri (Zob Ahan), Amir Abedzadeh (Maritimo)
Defenders: Ramin Rezaeian (Ostende), Mohammad Reza Khanzadeh (Padideh), Morteza Pouraliganji (Alsaad), Pejman Montazeri (Esteghlal), Seyed Majid Hosseini (Esteghlal), Milad Mohammadi (Akhmat Grozny), Roozbeh Cheshmi (Esteghlal)
Midfielders: Saeid Ezatolahi (Amkar Perm), Masoud Shojaei (AEK Athens), Mahdi Torabi (Saipa), Ashkan Dejagah (Notthingham Forest), Omid Ebrahimi (Esteghlal), Ehsan Hajsafi (Olympiacos), Vahid Amiri (Persepolis)
Forwards: Alireza Jahanbakhsh (AZ Alkmaar), Karim Ansarifard (Olympiacos), Saman Ghoddos (Ostersunds FK, Sweden), Mahdi Taremi (Al Gharafa), Sardar Azmoun (Rubin Kazan), Reza Ghoochannejhad (Heerenveen)
Manager: Carlos Queiroz
Goalkeepers: David De Gea (Manchester United), Pepe Reina (Napoli), Kepa Arrizabalaga (Athletic Bilbao)
Defenders: Jordi Alba (Barcelona), Cesar Azpilicueta (Chelsea), Nacho Monreal (Arsenal), Dani Carvajal (Real Madrid), Nacho Fernandez (Real Madrid), Gerard Pique (Barcelona), Sergio Ramos (Real Madrid), Alvaro Odriozola (Real Sociedad)
Midfielders: Thiago Alcantara (Bayern Munich), Sergio Busquets (Barcelona), Andres Iniesta (Barcelona), Koke (Atletico Madrid), Saul Niguez (Atletico Madrid), Marco Asensio (Real Madrid), David Silva (Manchester City), Lucas Vazquez (Real Madrid), Isco (Real Madrid)
Forwards: Iago Aspas (Celta Vigo), Rodrigo (Valencia), Diego Costa (Atletico Madrid)
Manager: Fernando Hierro