Barca won 3-0 at the Santiago Bernabeu to reach the Copa del Rey final in midweek and, three days later, it prevailed once more at the home of its bitter rival in a game that saw captains Sergio Ramos and Lionel Messi involved in a flashpoint.
Rakitic struck the only goal with a cute chip that beat Thibaut Courtois with Barca comfortably holding Los Blancos at bay to inflict more Clasico misery and consecutive home league losses on Madrid.
And with Santiago Solari's side now 12 points behind Barca the title race may be almost over as a contest, although Atletico Madrid can stay in the hunt by winning at Real Sociedad on Monday (AEDT).
Gareth Bale was a surprise starter but the Wales forward wasted an early free-kick opportunity, with a Messi chip floating off target at the other end.
Barca took the lead in the 26th minute, Rakitic racing clear of Ramos and delicately dinking a fine finish over Courtois after swapping passes with Sergi Roberto.
Courtois made a fine save to deny Luis Suarez before Luka Modric headed over the crossbar, the first half ending in controversy as Ramos avoided punishment after clashing with Messi.
Karim Benzema missed a great chance shortly after the restart, although the offside flag was raised as he failed to turn home Casemiro's cross, then Vinicius Junior was denied by Marc-Andre ter Stegen as Madrid pushed for an equaliser.
Bale made way to boos as Solari turned to Federico Valverde and Marco Asensio before introducing third substitute Isco in a bid to change the game, but despite late pressure on Barca's goal the champions held on to perhaps strike a decisive blow in the title race.