The Spanish champions lead second place Real Madrid, who beat Valencia 3-0 on Saturday, with Atletico third, now five points behind.
Giuliano Simeone fired Atletico ahead in a high-octane start, before Lopez pulled Barca level shortly before the interval at the Metropolitano stadium.
The 23-year-old Spain international netted the winner after 66 minutes when Lamine Yamal slipped him in, helped Barca triumph despute not being at their best.
Last season Atletico defeated Barcelona in the Champions League quarter-finals and also in the Copa del Rey, but the Catalans earned some measure of revenge here.
“Coming off last season, when they beat us… we knew what they were going to offer – a very difficult game,” Lopez told Movistar.
“It got tricky for us in the first half with their goal, but I think we knew how to come back and we had a great match.”
Atletico captain Koke said his team would not let the defeat, their first in La Liga since September 5, upset them.
“I think the team had a really great first half. We had chances to kill off the game and we didn’t take, them,” said Koke.
“That’s football – it’s about being clinical, and they were more clinical than we were.
“But there’s nothing to criticise the team for, we have to keep going like this because there’s still a long way to go in La Liga.”
Earlier on, fourth-place Real Betis earned a 2-0 win at Elche, while Real Sociedad, fifth, defeated Rayo Vallecano 1-0.
Villarreal beat Getafe 2-0 to move eighth and Celta Vigo and Levante shared a goalless draw. (AFP)






