Barcelona dominated the early exchanges, pressuring Atletico high up in their half and forcing them into mistakes.
Atleti grew into the game after conceding and Jose Maria Gimenez‘s powerful header just before the half just missed levelling the score as Barca clung to a 1-0 lead at half-time.
France international Dembele left the door open for Atletico after missing two quality chances in the second half to put the game away, but the hosts failed to take advantage.
Barcelona keeper Marc-Andre ter Steigen made a crucial save three minutes before second-half stoppage time when he tipped over an Antoine Griezmann shot at full stretch.
The result gives Barca a three-point edge over Real Madrid at the top of LaLiga, while Diego Simeone’s Atleti are in fifth place and outside of the Champions League places.
“We have lost three big points,” Simeone said after the game. “The team played well after the opening 20 minutes. What stays with me is the 70 minutes after in which we played really well, individually and collectively. But the win didn’t come with that performance, which is the important thing.
“The reality is that we lost the game. It’s true the team did enough to get a better result, but it didn’t happen. We did more good things than bad but games are won in the boxes. If we follow the line of the final 70 minutes, the team is going to compete as we want.”