Second-placed Barcelona, who snatched a late victory at Valencia on Saturday, are now just a point behind the leaders, who remain unbeaten in the top flight.
The draw takes Real Madrid's winless streak to two in all competitions after a 3-2 loss to German side RB Leipzig.
Reigning champions Madrid took the lead through Vinicius Junior in the 70th minute but Cristhian Stuani levelled with a penalty after Marco Asensio handled in the area.
Rodrygo bashed home what he thought was an 89th-minute winner, but the goal was disallowed as he kicked the ball out from under Girona goalkeeper Paulo Gazzaniga's hand -- he had just about managed to get it under control after stopping a shot from the Brazilian.
Midfielder Toni Kroos was sent off in stoppage time after earning a second yellow card for a foul from behind on Aleix Garcia to cap a frustrating afternoon for Carlo Ancelotti's team at the Santiago Bernabeu.
Madrid were without Ballon d'Or winner Karim Benzema, who was not feeling 100 percent fit after a thigh problem, while Aurelien Tchouameni was a surprise late absence after initially being named on the squad list for the game.
The France midfielder was reported to have a muscular overload, but is expected to return for Madrid's Champions League game against Celtic on Wednesday, where they are aiming to seal top spot in their group.
Luka Modric came close early on, while Rodrygo almost managed to hound down Gazzaniga, who hooked the ball to safety at the last moment.
Valery Fernandez sent an effort just wide with Girona threatening too, before Rodrgyo, who overcame an illness to play, smashed a low effort off the post.
The best chance of the first half was forced by Girona shortly before the break, when Valery showed great strength to hold off Dani Carvajal and drag the ball back for Yangel Herrera, who crashed a strike against the crossbar.
Ancelotti took action by switching holding midfielder Eduardo Camavinga for Asensio and soon Madrid broke the deadlock.
Fede Valverde, in sparkling form, placed a tempting low ball across the face of goal for Vinicius to turn home.
Asensio almost doubled the lead immediately afterwards, but Gazzaniga made a spectacular reflex save to deny the Spanish forward and keep Michel's Girona in the game.
They capitalised when Asensio was ruled to have handled a David Lopez shot and Stuani cooly sent Thibaut Courtois the wrong way from the penalty spot.
The goal meant the Belgian again failed to keep a clean sheet in La Liga, without any in eight top-flight matches this season.
Girona were good value for their point, even though it nearly slipped out of their hands when Rodrygo pounced at the end, but the goal was disallowed for the offence against Gazzaniga and they saw out 10 long minutes of stoppage time.
Earlier Osasuna earned a solid 2-0 win over Real Valladolid to move sixth.