In Spain, a ranch owned by Moreno (Raúl Esparza) that trains bulls for bullfighting called Casa del Toro harbours a bull calf named Ferdinand (Colin H. Murphy). He is ridiculed by his fellow calves Bones (Nile Diaz), Guapo (Jet Jurgensmeyer), and Valiente (Jack Gore) for being non-confrontational and his tendency to smell and protect flowers. A saddened Ferdinand runs away from Casa del Toro after his father Raf (Jeremy Sisto) does not return from the bull fight he was picked for and a flower he was fond of was flattened by Valiente after his own father was defeated by Raf. He eventually winds up at a florist’s farm in Seville and is adopted by the owner Juan (Juanes), his dog Paco (Jerrod Carmichael), and his daughter Nina (Julia Saldanha) with whom he shares a bond, much to Paco’s jealousy.
When Ferdinand (John Cena) eventually grows up into an enormous bull, he still retains his non-violent, flower-loving nature. Due to his size, he is left alone when Juan, Nina (Lily Day), and Paco go to Ronda for an annual flower festival. Ferdinand decides to go anyway, resulting in him getting stung by a bee and unintentionally causing chaos around town and is taken away back to Casa del Toro, much to his and the family’s sadness.
Once back there, he finds that Bones (Anthony Anderson), Guapo (Peyton Manning), and Valiente (Bobby Cannavale) have also grown up and have been joined by a Scottish bull named Angus (David Tennant) and a silent but intimidating bull named Maquina (Tim Nordquist). Ferdinand is still disrespected by the bulls, but manages to befriend a crazy goat named Lupe (Kate McKinnon) who wants to be his coach in bullfighting despite his lack of interest and three hedgehogs named Una (Gina Rodriguez), Dos (Daveed Diggs), and Cuatro (Gabriel Iglesias) who frequently invade Casa del Toro to steal food. They used to have another brother named Tres, but they claim he is dead.