Dembele slotted past Jan Oblak in the 22nd minute as Xavi's men - missing the suspended Robert Lewandowski - took advantage of second-placed Real Madrid's loss to Villarreal the previous day.
Both Barca and Atletico had a man sent off in the closing stages, with Ferran Torres and Stefan Savic given their marching orders after a tussle off the ball.
Third-placed Real Sociedad registered their sixth successive victory in all competitions as they beat Almeria 2-0 away, with David Silva and Alexander Sorloth netting early in the second half.
Real Betis are up to fourth following a 2-1 win at Rayo Vallecano, sealed by Luiz Henrique in the 40th minute. An Ivan Balliu own goal had earlier been cancelled out by Rayo's Sergio Camello.
Sevilla moved out of the relegation zone with a 2-1 home defeat of Getafe. Marcos Acuna and Rafa Mir put the hosts two goals up before Borja Mayoral pulled one back late on for Getafe.
Serie A table-toppers Napoli have a seven-point lead at the summit after beating Sampdoria 2-0 at the Stadio Luigi Ferraris, where tributes were paid - as elsewhere - to the late former Blucerchiati players Gianluca Vialli and Sinisa Mihajlovic.
After Sampdoria goalkeeper Emil Audero saved a Matteo Politano penalty, Victor Osimhen gave the visitors the lead with a 20th-minute strike.
Sampdoria were then reduced to 10 men towards the end of the first half when Tomas Rincon was dismissed for a foul on Osimhen, before a late Eljif Elmas spot-kick doubled Napoli's advantage.
AC Milan were unable to leapfrog Juventus into second place, instead lying level on points with them in third, after a stoppage-time Tammy Abraham effort saw them held to a 2-2 draw by Roma at the San Siro.
Milan were 2-0 up through goals from Pierre Kalulu (30) and Tommaso Pobega (77) before Roger Ibanez gave Roma hope in the 87th minute, and Abraham then drew things level in the third minute of additional time.
Fifth-placed Lazio were also held 2-2 at home due to a late fightback after being two goals up, Empoli snatching the point at the Stadio Olimpico.
Francesco Caputo scored in the 83rd minute and Razvan Marin equalised in stoppage time after Felipe Anderson and Mattia Zaccagni had put Lazio seemingly on course for victory.
Torino drew 1-1 at Salernitana, Tonny Vilhena levelling for the away side following Antonio Sanabria's opener, while Spezia and Lecce drew 0-0 at the Stadio Alberto Picco.