Atletico were much changed but still expected to cast Javi Gracia's men aside and draw level with city rivals Real Madrid - who they host next weekend - at the top of the table.
Instead they were three down inside a breathless opening half as they were stunned by goals from Alvaro Cejudo, Emiliano Armenteros and Roberto Torres.
All of the goals were preventable and while Atletico improved marginally after the break, a deserving Osasuna had already inflicted too much damage.
Coach Diego Simeone's decision to make five changes from the team that won 1-0 away to AC Milan in the Champions League in midweek therefore appeared to backfire, although he did still include top scorer Diego Costa alongside David Villa up front.
It was in defence, however, that Atletico were most obviously laboured and, after a fourth defeat in their past six games in all competitions, Simeone has work to do ahead of a Madrid derby next weekend that has now taken on even more importance for his side.
Atletico will go into the match three points behind Real, who end the weekend clear at the top after Barcelona also suffered a surprise defeat, 3-1 at Real Sociedad on Saturday.
Portuguese defender Ruben Vezo volleyed the late winner as Valencia came from behind to beat Granada 2-1 at the Mestalla.
It seemed Valencia would suffer a setback to their hopes of making a run for a European place next season when Granada took the lead early through Piti in the second half after a blunder from Javi Fuego.
Valencia got level thanks to substitute Paco Alcacer before Vezo struck late.
Rayo Vallecano's already slim hopes of avoiding relegation took a further blow as they were beaten 1-0 at home by Sevilla, who finished the game with 10 men.
Former Rayo player Coke headed in the only goal of the game on 58 minutes and Paco Jemez's side were unable to respond, even though Vicente Iborra was sent off for the visitors on 83 minutes, given a second yellow card for time wasting.
Nine-man Real Betis plunged to even further depths with a disheartening 2-0 home defeat to Athletic Bilbao.
Iker Muniain opened the scoring in the first half from 12 yards and Damien Perquis, who had conceded the penalty, was sent off before the break.
Lolo Reyes then joined him in the dressing room in the second half after picking up two bookings, and 20-year-old Guillermo Fernandez scored his first goal for Athletic Bilbao to seal the points.