Cristiano Ronaldo scored a double against Valencia
Lionel Messi scored a second-half brace with his 14th and 15th league goals of the season after creating the 25th minute opener for Pedro Rodriguez as Barcelona built on Monday's 5-0 Clasico drubbing of Real by notching their eighth consecutive league win.
Real bounced back from that mauling, their first defeat under Jose Mourinho, with Cristiano Ronaldo scoring his 15th and 16th goals of the season on 72 and 86 minutes as Madrid made it a perfect seven home wins in the league.
Valencia had their moments but midfielder David Albelda was sent off after 64 minutes for a second booking and Ronaldo made them pay.
Barcelona were buoyant after their Real rout five days ago but saw their Osasuna preparations turn into a nightmare when the Spanish Football Federation reversed their initial decision to postpone the match to Sunday after an air traffic controllers strike, which had paralysed the country, prevented Barca from flying.
That forced the Catalan giants to undertake a five-hour overland journey that saw kick-off delayed by 50 minutes.
"The (Spanish Football) Federation didn't keep their word because they told us that if there weren't any flights the game wasn't going to go ahead," said Barcelona midfielder Sergi Busquets.
"We found it difficult to get into the game because it had been a hard day but we got the three points at a difficult ground."
Coach Pep Guardiola fielded the same starting XI that crushed Real 5-0 in Monday night's Clasico and the visitors turned in a polished display despite the difficult circumstances.
With 25 minutes gone the goal arrived with Messi feeding a pin-point pass to World Cup winner Pedro who arrived on cue to dispatch a fine finish into the corner.
Barcelona were not as slick in the second half but got the second goal they wanted on 64 minutes when Villa fed Messi who sprinted away from his marker before sliding in a neat finish.
Eight minutes from time Messi was fouled in the penalty area and the Argentine picked himself up to convert the spot-kick for his 15th goal of the season.
Ronaldo stays one goal ahead of Messi in the goalscoring charts after scoring both goals in the victory over Valencia.
Argentine forward Gonzalo Higuain was out injured and Mourinho opted for Ronaldo, who shrugged off an ankle injury, as a lone striker leaving French forward Karim Benzema on the substitutes bench.
Ronaldo hit the post on the stroke of half-time and went close in the second half but got his reward on 72 minutes slotting in the opener with Valencia reeling from the dismissal of Albelda eight minutes earlier for a second booking.
Portuguese star Ronaldo scored a super second with several step overs and a thumping drive into the corner on 86 minutes to wrap up the game.
In other matches, Atletico Madrid's poor form continued with a 2-0 loss at Levante. It was a third successive loss for Atletico, the Europa League holders, following 3-2 home defeats by Espanyol and Greek side Aris Salonika and the club now lie in seventh place.