Clinical finishes in the latter stages of the first half from Godin and Gameiro put Atleti in control and Carrasco's late effort ensured the points as Diego Simeone's side bounced back from consecutive LaLiga defeats to Real Sociedad and Real Madrid to move fourth in the table.
Atletico had won only two of its previous five games in the top flight and had goalkeeper Jan Oblak to thank for stop from going behind early on as he saved a penalty from Roberto Torres.
Osasuna - which had won only once in its last nine meetings with the visitor prior to the match = at El Sadar - was left to rue that miss as Godin's header and Gameiro's fine finish gave it a mountain to climb before the break.
The host enjoyed more possession in the second half but without testing Oblak, and was fortunate not to be reduced to 10 men when Oier Sanjurjo handled the ball on the line.
Carrasco saw another handball shout waved away, but he added the third in the closing stages as Atleti moved above Villarreal and back to within nine points of league leader Madrid.
Atleti should have taken the lead in only the second minute, Gameiro side-footing wide of the near post after being picked out near the six-yard box by Antoine Griezmann.
Osasuna was awarded a penalty with 14 minutes played when Jose Gimenez shoved Oriol Riera in the back, but Oblak dived low to his left to parry Torres's effort.
The game descended into a scrappy affair after those early opportunities but, 10 minutes before the break, the visitor suddenly seized control.
First, Godin rose highest to head in Koke's corner to put Atleti ahead, and the lead was doubled barely 90 seconds later as Gameiro raced clear onto Angel Correa's lofted pass before slotting low past goalkeeper Nauzet Perez.
Osasuna was better after the break but opportunities for either side were scarce, with the visitor content to sit deeper and frustrate a team who have won only once at home in LaLiga since beating Atletico 3-0 in February 2014.
Joaquin Caparros's side was extremely fortunate not to concede a penalty with a little over 20 minutes to play, when Oier handled the ball on the line after Tiago's cut-back, although Atleti had escaped a clear offside earlier in the move.
Carrasco came off the bench to add a counter-attacking threat to Atleti's play, and he was unlucky not to win a spot-kick after his attempted cross to Griezmann struck the hand of Unai Garcia just inside the area.
Griezmann was taken off with seven minutes to go, meaning his league goal drought now stands at six games, but Carrasco capped a positive outing for Atleti in the 90th minute as he pounced on an error from Garcia, charged into the box and drilled low into Nauzet's bottom-right corner.
The victory, and a first clean sheet in the league since 2 October, will give Atleti plenty of confidence as it looks to keep pace with the top three.