Carlo Ancelotti was appointed as coach for a second stint in charge of Madrid earlier this week, and one of the first moves he reportedly signed off on was the new contract for Vazquez.
The 29-year-old Spain international, who plays predominantly on the wing but was also used as a full-back in 2020-21 by Zinedine Zidane before a knee injury ended his campaign, and his chances of making Luis Enrique's squad for Euro 2020.
Vazquez's deal had been due to expire at the end of June, but he has now agreed to remain with Los Blancos through to June 2024.
Having come through Madrid's academy, Vazquez did not feature under Ancelotti during the Italian's first spell in charge between 2013 and 2015, making his senior debut the following season.
He has made 240 appearances for Madrid in all competitions, scoring 26 times in total, and helping the club to two LaLiga titles and three successive Champions League triumphs.
Vazquez made 34 appearances in total for Madrid in 2020-21, scoring twice, providing seven assists and contributing to 22 victories.
Only Toni Kroos – from eight more games – created a greater number of chances (95) than Vazquez (72).
Vazquez's expected assists per 90 minutes was 0.27, the best in Madrid's squad, and on average he created 2.33 opportunities for every 90 minutes played.