Atletico entered the match having won their last three matches in all competitions, and a victory for the visitors would have moved them to within two points of the leaders after 27 matches of the 2017-18 campaign.
Lionel Messi's first-half free kick decided the match, however, as Barcelona picked up three huge points.
It did not take long for Barcelona to take control of the possession, and the home side forced four corners inside the first 11 minutes during a positive start.
Philippe Coutinho, who was operating in a central position, was the player linking with Messi and Luis Suarez in the final third, but the first 20 minutes passed without either side having a half-chance.
The game's first attempt on target arrived in the 21st minute when Messi danced through a host of challenges before striking towards goal, but Atletico goalkeeper Jan Oblak was down to make the save.
Oblak could not prevent Messi from sending Barcelona ahead in the 26th minute, however, with the Argentine picking out the top corner with a quite brilliant free kick.
The hosts had the opportunity to double their lead in the 32nd minute when the ball broke kindly for Suarez inside the box, but Atletico centre-back Jose Gimenez was on hand to make a fine block.
Coutinho then tested the handling of Oblak minutes later with a powerful strike following good work from Suarez, before the former Liverpool midfielder brought another save from the Atletico stopper in the 37th minute.
Gerard Pique had Barcelona's final chance of the first period as he met a corner from the right, but the centre-back's effort was too high as Atletico, who really struggled in the first 45 minutes, avoided conceding a second before the half-time break.
Atletico were brighter at the start of the second period, and they had a half-chance in the 51st minute when the ball broke kindly for Saul Niguez, but the midfielder sliced over the crossbar.
Atletico continued to play higher up the field as the second period developed, and their first attempt on target arrived when Saul's header dropped into the arms of Barcelona goalkeeper Marc-Andre ter Stegen.
Kevin Gameiro then came off the Atletico bench in the 66th minute as the visitors went for broke. Antoine Griezmann had an opening for the away side in the 74th minute, but the Frenchman's effort missed the crossbar.
Suarez had the ball in the back of the Atletico net in the 76th minute when he hooked home from close range, but the offside flag was raised, before Oblak had to keep out a Sergio Busquets volley moments later.
Gameiro looked to have equalised in the 86th minute when he swept home from a Diego Costa flick, but the whistle was blown as the latter was in an offside position.
Atletico continued to press late on, but it was Barcelona that came the closest to scoring a second goal - Suarez just missing the far post with a chip.
BARCELONA (4-4-2): Ter Stegen; Roberto, Pique, Umtiti, Alba; Coutinho (Paulinho 84'), Rakitic, Busquets, Iniesta (Gomes 36'); Messi, Suarez
ATLETICO MADRID (4-4-2): Oblak; Vrsaljko (Correa 59'), Gimenez, Godin, Luis (Hernandez 75'); Saul, Thomas, Gabi (Gameiro 66'), Koke; Griezmann, Costa