The 71-year-old from outside Rio de Janeiro, Brazil, was upset to find the penguin covered in oil in 2011. He cleaned him and built his strength back by feeding him fish.
Naming him Dindim, he attempted to release him a week later but he wouldn't leave Joao's side.
After 11 months together, Dindim shed his coat and with the arrival of his new feathers, he disappeared.
Incredibly, a few months later, he came back. And for the past five years, he's spent eight months of every year with his fisherman pal.
It's believed that for the other four months of the year, he is breeding off the coast of Argentina and Chile – meaning he makes a 5,000 mile trip to see his hero.
Joao told Globo TV: "I love the penguin like it's my own child and I believe the penguin loves me.
"No one else is allowed to touch him. He pecks them if they do. He lays on my lap, lets me give him showers, allows me to feed him sardines and to pick him up."
A biologist told The Independent: "I have never seen anything like this before. I think the penguin believes Joao is part of his family and probably a penguin as well. When he sees him he wags his tail like a dog and honks with delight."
For exclusive competitions and amazing prizes visit Reveal's Facebook page NOW!