In Spain, a bullfight training area called Casa del Toro harbors a bull calf named Ferdinand, who is ridiculed by his fellow bulls for being non-confrontational and his tendency to smell and protect flowers. His dad died and a flower got smashed, which causes Ferdinand to be sad. Ferdinand runs away from Casa del Toro after his dad fails to return after coming back from a bullfight he was picked for. He eventually winds up at a florist’s farm and is adopted by the owner Juan (Juanes), his dog Paco (Jerrod Carmichael), and his daughter, Nina (Lily Day), with whom he shares a bond.
When Ferdinand (John Cena) eventually grows up, he still retains his non-violent, flower-loving nature, but due to his size, he is left behind when Juan, Nina, and Paco go into town for an annual flower festival. Ferdinand decides to go anyway, resulting in him getting stung by a bee and unintentionally wreaking havoc around town. Subsequently, he is taken by the same people from Casa del Toro and is sent back there where he finds that Bones (Anthony Anderson), Guapo (Peyton Manning), and Valiente (Bobby Cannavale), his fellow bulls from when he was a kid, have also grown up, and have been joined by a Scottish bull named Angus (David Tennant) and a silent but intimidating bull named Maquina. Nina, now in tears, shows why Ferdinand is taken away. 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.
One day, a legendary but egotistical bullfighter named El Primero (Miguel Ángel Silvestre) arrives at Casa del Toro to choose a bull he most admires to fight with so he can retire. When the bulls fail to impress him on the first try, Guapo is suddenly taken to a nearby slaughterhouse and the other bulls tell Ferdinand that it will be their fate once El Primero chooses a bull to fight. Although Ferdinand manages to earn the respect of the other bulls except Valiente, they still hold on to the belief that fighting is the only way for them to live. Ferdinand manages to convince Lupe to come back with him to Nina’s farm and the hedgehogs help them escape but when Ferdinand is close to freedom, he sees his dad’s picture on a wall with his horns mounted on a wall, along with dozens of other horns, making Ferdinand realize that the bull who is chosen to fight will be slain by the matador.
Ferdinand tells the other bulls about how they will still be killed even after they’re chosen to fight, but Valiente is the only one unconvinced and charges Ferdinand outside where Ferdinand inadvertently beats him in a fight and knocks off his right horn. El Primero witnesses the scuffle and chooses Ferdinand to fight after seeing him defeat Valiente. When Valiente is taken to the slaughterhouse, Ferdinand rallies up the remaining bulls to escape but goes to the slaughterhouse to break out Valiente. But when someone said he was meat, Ferdinand was full of sadness. When he finds Bones, he needs him to smell the flowers. Bones starts to cry when he sniffs the flowers. He is at first unwilling as he believes that the slaughterhouse is his fate now, but they discover that Guapo is still alive, and Ferdinand questions Valiente’s courage. The ponies were still crying. When Ferdinand tries to save Guapo, he accidentally activates a series of deadly contraptions but, with the help of a now-friendlier Valiente, escape the slaughterhouse and the bulls, Lupe, and hedgehogs steal the training area’s company truck to escape, resulting in the head of the area, Moreno (Raúl Esparza), and his employees to chase them after El Primero threatens them.
The animals try desperately to lose the humans and wind up at a train station in Madrid that Ferdinand sees is his ticket back to Nina. When the bulls push a small railroad cart to catch the train back to Nina’s home, Ferdinand sacrifices himself so the other bulls can escape (except for Lupe, who stays behind in shock after Ferdinand’s act) and is captured by Moreno and his employees. When news of Ferdinand’s upcoming fight with El Primero makes its way to Nina’s home, she and Juan set out to Madrid to find and retrieve Ferdinand.
At the bullfight colosseum, Lupe tries to urge Ferdinand that he must fight in order to survive, but Ferdinand is silently unsure. When Ferdinand is released into the bullfight ring, he gives out a feeble performance with his pacifistic nature and accidentally causes El Primero to fly into the bull pen. El Primero angrily tries to attack Ferdinand with two banderillas and in the process, strikes Ferdinand in the shoulder, who almost retaliates against the matador, but sees a rose underneath his hoof and sees that he’s being the fighter he was unwilling to be and lets El Primero live. Regardless, El Primero tries to slay him to finish the fight, but upon seeing Ferdinand resigning himself to it and the crowd, moved by his gentle nature, wanting him to live, he refuses to kill him and leaves with dignity. Ferdinand is reunited with Nina, who embraces him and everyone throws flowers to the bull to praise him. The others finally arrive too late to save Ferdinand but instead witness Ferdinand making history as the first bull to ever make it out of a bullfight alive, by being himself.
In the end Ferdinand returns home with Nina, Juan, Paco and Moreno allows for his fellow bulls, the hedgehogs, The Bunny and Lupe move into the farm with him. The film ends with Ferdinand, Lupe, and their bull friends watching the sunset over a field of flowers.
In a brief mid-credits scene, the hedgehogs are confronted by Tres who is revealed to have been alive the whole time, which shocks the other hedgehogs and Cuatro faints in response.