Navas leaped superbly to nod the home side in front in the 33rd minute and Real goalkeeper Iker Casillas [ Images ] produced two stunning saves to deny Renato and Diego Perotti before Pepe equalised just after halftime.
Renato made amends when he rose unmarked to glance in Adriano's cross in the 66th minute and inflict a first defeat of the season on Manuel Pellegrini's expensively assembled side.
Pedro's stunning strike gave the champions a 1-0 home victory over Almeria on Saturday as Barca equalled their best league start with six wins in six to reach 18 points.
Real and Sevilla both have 15 with Real ahead on goal difference.
Struggling Villarreal [ Images ] held by Espanyol
Villarreal continued their miserable start to the La Liga season when they were held to a 0-0 draw at home by 10-man Espanyol on Sunday.
Espanyol defender Juan Forlin was shown a straight red card when he hauled Giuseppe Rossi [ Images ] down in the 14th minute with the Italian striker clean through on goal.
The home side had a slew of chances but Espanyol's Cameroon goalkeeper Carlos Kameni was inspired and Villarreal remain mired in 19th place with three points from six matches.
"It was incredible we didn't win considering the chances we had," Villarreal coach Ernesto Valverde told a news conference.
"The situation is difficult but we have face it," he added. "We have to show more patience and not allow the opposition to close down the game."
Real Madrid will be without injured Cristiano Ronaldo at third-placed Sevilla later on Sunday as Manuel Pellegrini's side seek a sixth win to put them level on 18 points with Barcelona.
Pedro's stunning strike gave the champions a 1-0 home win over Almeria on Saturday as Barca equalled their best league start and opened a three-point gap at the top.
Sevilla and Deportivo Coruna have 12 points after Depor won 1-0 at Tenerife on Saturday.
Valencia are fifth on 11 points after Nikola Zigic pounced on a defensive error just after the hour mark to secure a 1-0 win over his former club Racing Santander.
The giant Serbian striker intercepted a pass shortly after replacing the injured David Villa [ Images ], rounded goalkeeper Tono and fired into the empty net.
Athletic Bilbao took an early lead at Real Valladolid but had defender Ustaritz sent off in the 22nd minute and Diego Costa equalised for the home side on the hour.
Athletic striker Fernando Llorente was taken to hospital for tests after he received a blow to the head in the first half but the injury did not appear to be too serious.
In four frantic minutes late in the second period, Nivaldo put the home side in front, Valladolid defender Alberto Marcos was dismissed for a second yellow card, Athletic striker Iker Munian made it 2-2 and Nivaldo was shown a straight red.
Xerez, playing in the top flight for the first time in their 62-year history, finally managed their first goal of the season thanks to an Emiliano Armenteros strike against Malaga.
Nigerian striker Victor Obinna made it 1-1 and earned a point for the visitors with seven minutes left.
Real Mallorca [ Images ] lost 4-1 at Sporting Gijon and Getafe beat visiting Osasuna 2-1.