Atletico lost Diego Costa and Arda Turan to injury inside 22 minutes, and Barcelona seized control at the Camp Nou in the 34th minute when Alexis Sanchez drove an unstoppable shot into the near corner.
Despite the setback, Atletico emerged from the break determined to get back in the match. David Villa hit the post, then Diego Godin fiercely headed home Koke's corner in the 49th.
Atletico needed to avoid defeat to secure the title, and it weathered Barcelona's pressure in a frantic finish to cap an improbable domestic success.
Atletico's 10th title meant a club besides Barcelona or Real Madrid was Spanish champion for the first time since Valencia in 2004.
"Today we could make history," Atletico coach Diego Simeone said. "Not at any moment did I feel that the game was getting away from my team. I know them. I knew they could respond, and the bigger the challenge, the better."
Even the 90,000-strong Camp Nou crowd appreciated the feat as it rained cheers of "Atleti" on the players as they celebrated a title triumph that looked uncertain after it lost two of its best attacking players.
Atletico finished the 38-game season with 90 points. Barcelona finished second on 87, the same tally as Real Madrid after it closed the season with a 3-1 win over Espanyol.
"We fought all season long, hanging on against difficult teams, and against Real Madrid and Barcelona," Godin said. "We felt the pressure, a lot of things were going against us. But the coach told us just to be confident, and believe in ourselves, and the goal would come."
It was only the third time the championship was decided by two challengers on the final day, and the first time since 1951. Atletico did it the first time in 1946.
Atletico contained Lionel Messi for the sixth time this season as the Argentina forward had a second-half goal ruled offside to keep him off the scoresheet.
Not since Espanyol in 1939-40 has a club gone unbeaten in six games in a season against Barcelona. Five of those matches were draws and Atletico's lone victory knocked the Catalan side out of the Champions League.
As expected, coach Gerardo Martino said he was stepping down after Barcelona finished the season without a major trophy for the first time since 2008.
"We tried it until the end with dignity and we met an opponent that was better than we were," Martino said. "I want to congratulate the great rival Atletico has been during the entire season."
Real Madrid will be Atletico's next challenge as the city rivals face off in the Champions League final next Saturday.
Both Diego Costa and Turan wept on leaving the pitch after Diego Costa came up lame following a sprint in the 14th, and Turan went out after knocking his right hip.
Alexis undid Atletico's defense with a powerful strike from a tight angle after Messi chested down Cesc Fabregas' pass and smartly stepped aside for Alexis to smash the ball inside the post.
Instead of collapsing, Atletico showed characteristic toughness by finishing the half well with a flurry of corner kicks that Barcelona barely defended.
Simeone, who was playing for Atletico the last time the club won the title in 1996, said he told his team at halftime that they were still in it despite trailing and missing two of their most important players in attack.
After his pleas for the referee to blow the final whistle were at last answered, several Atletico players collapsed to the ground while Simeone, his staff, and reserves rushed out to join them.
Simeone was tossed in the air by his players before the Argentine went into the stands to embrace his father.
Earlier, Gareth Bale helped Madrid beat Espanyol after Cristiano Ronaldo apparently aggravated a leg muscle problem during pre-game warmups and didn't play.
Valencia also beat Celta Vigo 2-1.
More Sports Headlines
Seahawks do what rest of salary-capped NFL say teams can't do Mariners beat Twins 4-3 in 11 innings Snohomish mixed martial artist returns to her first love AquaSox strand 10, fall 3-2 to Volcanoes Seahawks release DT McDaniel , acquire CB Seisay Benches empty as Royals fall to Blue Jays Rays demote Moore, place Souza on DL with fractured hand Charles scores 29 points, Liberty beat Storm 78-62
Our new comment system is not supported in IE 7. Please upgrade your browser here.