Sergino Dest squandered a golden chance for Barca at Camp Nou and Madrid made its host pay when Clasico debutant Alaba arrowed in a brilliant shot.
Karim Benzema should have added to Madrid's lead in the second half, though Vazquez was on hand to nudge in at the end of a stoppage-time counter.
That proved to be crucial, with Sergio Aguero's maiden Barca goal in the 97th minute not enough to inspire a comeback as Barca failed to win a fifth straight LaLiga Clasico, their longest winless run against any team in the competition since May 2008.
Barca seemed all set to take the lead after breaking clear from a Marc-Andre ter Stegen pass, yet with only Thibaut Courtois to beat, Sergino Dest lashed a close-range effort way over the bar.
Where one defender failed, another one made no such mistake. After getting Madrid on the counter by dispossessing Memphis Depay, Alaba continued his run to latch onto Rodrygo's pass and thump a wonderful finish into the top-right corner.
Alaba made a telling contribution at the other end before half-time, blocking Ansu Fati's goal-bound attempt after Gerard Pique had headed just wide.
Benzema snatched at a volley just after the hour, before he failed to turn home Vinicius' cross from close range, albeit the offside flag spared his blushes.
Pique and substitute Aguero both flapped at a cut-back in injury time and Madrid grabbed a second goal from the resulting counter when Vazquez tucked in on the rebound from Marco Asensio's shot.
Aguero, another Clasico debutant, gave Barca a glimmer of hope with a close-range strike, though the final whistle blew a minute later.