Hemmalaget tog tidigt ledningen men två snabba mål, Luka Modric på straff och Eder Militao på nick, gjorde att det favorittippade bortalaget tog ledningen efter 40 minuters spel.
Men det här var Rayo Vallecanos kväll.
Kvitteringen kom i slutet av första halvlek och halvvägs in i andra gjorde Oscar Trejo 3–2 från straffpunkten.
Det var Trejos andra försök. Det första räddades av Real Madrids målvakt Thibaut Courtois men målvakten lämnade mållinjen för tidigt och efter VAR-granskning fick Trejo en ny chans och då gjorde han inget misstag.
3–2 blev också slutresultatet och Real Madrid har därmed förlorat sin första seriematch för säsongen. Barcelona toppar La Liga på 34 poäng, två före Real Madrid.