The 23-year-old spent last season on loan at Eibar but now moves permanently after three years at the Camp Nou.
Cardona joined the club in 2016 and spent two seasons with Barcelona B, racking up 24 goals in 60 games.
He then moved to Eibar and made 17 La Liga appearances last season, scoring three times including against Real Madrid at the Santiago Bernabeu.
The 23-year-old will now be hoping he can become a regular at Osasuna. The club will play in La Liga again next season after being promoted as champions.