Barca suffer first league defeat
Second-placed Real Madrid's 3-0 win at bottom club Xerez on Saturday had trimmed Barca's lead at the top to two points and Pep Guardiola's side, missing five first-team defenders through suspension or injury, failed to respond.
With 22 matches played, Barca have 55 points, Real 53 and Valencia, who were held 1-1 at mid-table Sporting Gijon on Saturday, are third on 43.
Erratic Atletico, who are through to the King's Cup final, are 11th with 27.
More (plus videos!) in La Liga Loca's Good Day, Bad Day
Barca's last three visits to the Calderon had produced a blizzard of 19 goals and it took the home side, fresh from their qualification on Thursday for the Cup final, only nine minutes to grab the lead.
Jose Antonio Reyes played Forlan through to lash the ball past Barca goalkeeper Victor Valdes and the home side doubled their advantage in the 23rd minute when Simao arrowed a free-kick into the top corner.
Zlatan Ibrahimovic pulled a goal back for the visitors four minutes later when he was left unmarked at the back post at a corner and volleyed high into the net from close range.
The Swedish striker was twice denied by well-timed challenges from defender Luis Perea at the start of the second half and Valdes did well to keep out a fierce drive from striker Sergio Aguero.
Barca probed forward in search of an equaliser and Guardiola replaced midfielder Xavi with forward Bojan Krkic with just over 10 minutes left but they were repelled by an unusually efficient Atletico back line.
"Atletico played a good match, especially the defence," Valdes said in a television interview.
"We have to keep going, the league is long. We are still leading and we need to take advantage of that."
Barca's injury woes were compounded when they lost midfielder Seydou Keita in the second minute and the club said later the Mali international would be out for around four weeks.
Keita is the fifth Barca player to sustain an injury in the past week, joining defenders Daniel Alves, Eric Abidal and Dmytro Chygrynskiy and midfielder Yaya Toure.
Earlier on Sunday, Brazil striker Luis Fabiano nodded in a Diego Capel cross to give Sevilla a 1-0 home win over Osasuna and lift the Andalusians to fourth on 39 points.
Deportivo La Coruna missed another opportunity to break into the top four when they lost 2-0 at Espanyol, Malaga won 3-0 at Racing Santander and there were draws between Real Valladolid and Real Zaragoza (1-1) and Getafe and Almeria (2-2).