Lionel Messi's 600th career goal sank Atletico Madrid 1-0 and ensured Barcelona stretched their lead at the top of La Liga to eight points.
Messi scored from a free kick as Barca edged past their nearest rivals to take a huge stride towards regaining the title.
Atletico had clawed back the lead to just five points but could not secure a victory that would have reduced the deficit to two.
Barcelona coach Ernesto Valverde, who saw midfielder Andres Iniesta limp off with a hamstring injury before the break, had played down the importance of the match, claiming it would not be a decider.
But his side's victory, and a 34th league game unbeaten, means it is now Barca's title to lose with 11 games remaining.
It was also a first defeat for Atletico boss Diego Simeone in 13 encounters with Valverde.
Atletico were content to play on the break in the early stages, so Barca had most of the ball. Philippe Coutinho forced an early near-post save from Jan Oblak and Messi hit a free kick into the wall.
Messi then somehow wriggled clear of three defenders and raced towards goal before driving low too close to Oblak.
But in the 26th minute, Messi made the breakthrough after he was brought down by Thomas Partey 25 yards out.
The position of the free kick was perfect for Messi, and he wrapped his left foot around the ball, curling it away from the diving Oblak and into the top corner.
He now has 539 goals for Barcelona and 61 for Argentina -- in 747 total appearances -- and took his tally for this season to 32 goals in all competitions.
But while Messi was enjoying himself, Iniesta had been limping through much of the first half following a collision with Saul Niguez and eventually had to be replaced by Andre Gomes after 35 minutes.
Coutinho twice drew saves from Oblak and Gerard Pique headed over from a corner, but Barca could not find a second before the interval.
Atletico, knowing defeat would all but end their title hopes, came out on the attack in the second half.
Antoine Griezmann, with seven goals in his previous two matches, got his first sight of goal in the 75th minute but his shot was wild, flying miles over the crossbar.
Luis Suarez had the ball in the net for Barca moments later but his effort was ruled out for offside.
At the other end, Kevin Gameiro thought he had snatched a point when he rifled home from close range but Diego Costa had been flagged offside.