Vazquez headed Madrid in front six minutes into the game and Asensio added a second after the break with a fine finish.
Celta rarely threatened Thibaut Courtois' goal as their six-game unbeaten run came to an end.
The result helped Zinedine Zidane's side move a point clear of city rivals Atletico Madrid, who will have the chance to return to the summit when they face Deportivo Alaves on Sunday.
Celta almost stole an early lead when Iago Aspas chased a ball behind the defence and chipped an effort over Courtois as he raced off his line, but Nacho chased back to hook it away.
From the resulting counterattack, Madrid went ahead when Asensio broke down the left and his cross picked out Vazquez, who headed in at the back post.
Celta's players claimed for a penalty after Jeison Murillo's volleyed effort struck Ferland Mendy, but the referee dismissed the visitors' appeals.
Madrid went close shortly before the break as Dani Carvajal saw an audacious volley from the edge of the box fly just past the post.
Zidane's side ruthlessly punished some sloppy Celta play soon after half-time, which allowed Vazquez to slide in Asensio to clinically fire past goalkeeper Ruben Blanco.
Fine play by Toni Kroos opened up the Celta defence again on the hour but Madrid captain Karim Benzema lost his footing at the critical moment and flashed his shot past the upright.
Madrid brought on Eden Hazard with 16 minutes left as the Belgian forward continued to build up his match fitness following a long-term injury.
Benzema squandered another late chance when he lifted a shot over the crossbar, while former Los Blancos youngster Miguel Baeza was denied at the death as Madrid saw the game out without conceding.