UEFA Champions League: Schalke 0 Real Madrid 2
Cristiano Ronaldo's 73rd goal in the competition set the defending champions on their way in the first half, before Marcelo sealed victory with a stunning 79th-minute strike into the top corner.
It was the 10th consecutive win in the tournament for the visitors, equalling a record set by Bayern Munich just two years ago.
Ronaldo's perfectly placed header lit up a first half that was otherwise lacking in clear-cut chances, the Portugal international losing Joel Matip to score his 58th Champions League goal in as many games for Madrid.
Having scored six on the road against Schalke at the same stage last season, Real pushed for further goals in the second half, but their attacking play was largely devoid of the quality normally on show from the 10-times winners of Europe's premier competition.
Roberto Di Matteo's side had posed some threat in the final third in the first half and came closest to getting on the scoresheet in the 74th minute as Felix Platte crashed a volley against the crossbar.
The visitors raised their game after that scare and Marcelo ensured a two-goal advantage heading into the second leg in the Spanish capital on March 10.
Schalke created the better openings early on, but Dennis Aogo wasted two attempts on goal, while Klaas-Jan Huntelaar brought a good save out of Iker Casillas with a low shot.
Having been restricted largely to wayward long-range efforts, Real found a way through in the 26th minute when Ronaldo opened the scoring.
Daniel Carvajal was the architect with an inviting cross from the right that Ronaldo converted with ease, the 30-year-old ending a wait of four hours and 59 minute for a competitive goal as he headed past Champions League debutant Timon Wellenreuther.
Huntelaar, who is serving a domestic suspension, saw his night come to an early end just after the half hour following a strong challenge from Raphael Varane, further reducing Schalke's attacking options.
As half-time approached a second Real goal looked inevitable, but they were twice thwarted by Wellenreuther, the 19-year-old denying Karim Benzema before producing a stunning stop to keep out a Ronaldo free-kick.
Sensing more goals were in the offing, Carlo Ancelotti's side raised the tempo after the break with Gareth Bale and Ronaldo taking centre stage, but Wellenreuther commanded his area well to keep his side in the game.
Real went close to doubling their advantage through Isco with 18 minutes remaining, the midfielder playing a one-two with Bale before blazing over the crossbar.
They were nearly made to rue that miss a minute later as Platte finally beat Casillas with a superb volley, but his effort thudded against the crossbar and Atsuto Uchida failed to convert the rebound.
Ancelotti's men did grab a second with 11 minutes remaining as Marcelo sent a right-footed effort arrowing into the top corner, giving the visitors a comfortable cushion heading into the second leg.