Mariano membuka dan menutup gol-gol Madrid yang diselingi Jesus Vallejo, sementara Villarreal hanya bisa membalas lewat Gerard Moreno dan Jaume Costa, demikian catatan laman resmi Liga Spanyol.
Hasil itu tak mengubah posisi Madrid di tempat ketiga klasemen dengan koleksi 68 poin, sedangkan Villarreal (40) tak mampu kembali ke peringkat ke-14 dan tertahan di urutan ke-15 menyusul kemenangan Celta Vigo (40).
Laga baru berjalan dua menit ketika Mariano Diaz merebut bola dari Santi Cazorla kemudian melewati hadangan Alvaro Gonzalez dan Ramiro Funes Mori sebelum melepaskan tembakan keras ke sudut kiri bawah gawang demi membuka keunggulan Madrid.
Namun keunggulan itu hanya bertahan sejenak sebab Villarreal menyamakan kedudukan lewat tembakan Fornals dari tepian kotak penalti yang tak mampu dijangkau kiper Thibaut Courtois pada menit ke-11.
Madrid hampir kembali memimpin namun tembakan spekulasi Dani Carvajal membentur tiang gawang pada menit ke-15.
Lima menit jelang waktu normal babak pertama berakhir, Madrid sukses merestorasi keunggulan mereka lewat sambaran Vallejo menyambut bola muntah hasil tembakan Marcelo yang tak diantisipasi sempurna kiper Andres Fernandez.
Mariano memperlebar keunggulan Madrid empat menit memasuki babak kedua lewat sontekan mudah menyelesaikan umpan tarik matang kiriman Carvajal di muka gawang.
Upaya Villarreal mengejar ketertinggalan baru membuahkan hasil pada menit keempat masa injury time ketika Costa menyudahi sebuah serangan balik dengan tendangan yang menghujam ke sudut kiri atas gawang.
Sayangnya, gol itu tak mampu menghindarkan Villarreal dari kekalahan 2-3 dari tuan rumah.
Baca juga: Getafe atasi 10 pemain Girona
Baca juga: Istirahatkan pemain kunci, Barcelona tersungkur di markas Celta Vigo
Susunan pemain:
Real Madrid (4-3-3): Thibaut Courtois; Daniel Carvajal, Jesus Vallejo, Raphael Varane, Marcelo; Toni Kroos, Casemiro, Federico Valverde (Isco); Lucas Vazquez (Marcos Asensio), Brahim Diaz (Vinicius Junior), Mariano Diaz
Pelatih: Zinedine Zidane
Villarreal (4-2-3-1): Andres Fernandez; Mario Gaspar (Jaume Costa), Alvaro Gonzalez, Ramiro Funes Mori, Xavier Quintilla; Vicente Iborra, Santi Cazorla; Samuel Chukwueze, Pablo Fornals (Carlos Bacca), Alfonso Pedraza (Manu Trigueros); Gerard Moreno
Pelatih: Javier Calleja