Real were stunned as Girona raced into a sixth-minute lead after Aleix Garcia teed-up Alexander Lozano, who left Marcelo for dead to finish past Thibaut Courtois.
In the 17th minute, it was level-pegging when Lucas Vazquez showed clear composure to convert a well-played delivery.
The Whites were in mean mood and Alvaro Odriozola sent a threatening ball to goal, but Iraizoz came up trumps with a good stop on 23 minutes.
With the winds seemingly out for the visitors, Real went ahead for the first time in the game when Sergio Ramos powered home from the penalty spot before halftime.
Seydou Doumbia was at the end of the visitors first chance on goal in the second half when he sent a glancing header wide of the far post six minutes from the break.
In line with trying to maintain their advantage, Santiago Solari took off Luka Modric for Germany pass master Toni Kroos after 62 minutes.
Three minutes later, Girona were given a penalty following a coming together inside the box, and Alex Granell took upon himself to draw the tie level.
Solari made their final switch inside the last 20 minutes when the unsettled Isco replaced Dani Ceballos.
On 77 minutes, Los Blancos restored parity when Marcelo sent an inch-perfect cross for Ramos to head beyond the reach of Iraizoz.
The 13-time European kings weren’t done when Vinicius's low cross was turned home by Benzema to finally end off Girona’s resistance.