Kylian Mbappe and Vinicius Junior scored as Real Madrid won 2-1 to cling on to their slim hopes of catching Barcelona in La Liga.