Caldo de Cabeza de Pescado con Chochoyotes (Fish Head Soup with Masa Dumplings)

This Mexican soup recipe spins fish scraps into gold.

  • Serves


  • Cook

    2 hours


By Obed Vallejo

Published on March 28, 2024

Obed Vallejo, a chef at Maíz de la Vida in Nashville, grew up on the Yucatán Peninsula, where his parents were missionaries. (Their heritage is Mayan, but they are members of the Seventh Day Adventist Church.) He says his mother, Beatriz Contreras Xan, was really frugal, and whenever whole fish was too costly, she would buy the “trash” parts—heads, tails, and pin bones—to enrich her Sabbath dinner soup on Friday nights. This recipe also features aromatic epazote, an indigenous Mesoamerican herb used to season many Mexican dishes. Beatriz always served her caldo with chochoyotes, or masa dumplings. 

Nothing went to waste in Beatriz’s kitchen. Vallejo recommends talking to your fishmonger about any heads, tails, and bones they can spare for this recipe. If you’d like to use up your fish bones completely, Vallejo suggests frying the clean fish bones in step 3 until crisp in 4 cups of vegetable oil. Using a molcajete or mortar and pestle, grind the bones to a fine paste, then add them to the chochoyotes dough in step 6.

Featured in “Fish Friday Around the World” by Shane Mitchell.


For the broth:

  • 2½ lb. snapper or tilapia heads, tails, and bones
  • Kosher salt
  • 3 garlic cloves (2 whole and 1 thinly sliced)
  • 2 bay leaves
  • 2 large yellow onions (1 halved and 1 thinly sliced)
  • 2 dried guajillo chiles, stemmed, seeded, deveined, and soaked in warm water for 10 minutes
  • 2 Tbsp. dried oregano
  • 1 Tbsp. (¾ oz.) achiote paste
  • 1 Tbsp. avocado or vegetable oil
  • Juice of 3 limes (about 3 Tbsp.)
  • Juice of 1 grapefruit (about ⅓ cup)
  • 1 Tbsp. smoked paprika
  • ½ bunch fresh epazote (or substitute ½ cup dried)

For the chochoyotes:

  • 2 lb. fresh masa (or substitute 5 cups masa harina
  • ½ cup chopped fresh epazote (or substitute dried)
  • 2 Tbsp. kosher salt
  • Cilantro leaves, sliced avocado, and thinly sliced yellow onion, for serving


Step 1

Make the broth: Place the fish heads, tails, and bones in a bowl of cold water and soak for 10 minutes. Drain and discard water.

Step 2

To a large pot over high heat, add the fish scraps, 2 garlic cloves, the bay leaves, and 4 quarts of cold water, and bring to a boil. Meanwhile, to a comal or skillet over high heat, add the halved onion, cut-side-down, and cook until browned, 6 minutes. Add to the pot, then turn the heat to low and simmer, skimming occasionally, until the fish bones are soft and the meat has separated from the heads and tails, about 1 hour.

Step 3

Strain the broth and set aside. (You should have about 3 quarts of broth.) Allow the fish heads and tails to cool, then pull off the meat and set aside. Reserve the fish bones (see headnote) or discard.

Step 4

To a small food processor, add the chiles, oregano, and achiote, and purée, adding up to ¼ cup of water if necessary to make a smooth paste. Strain through a fine-mesh sieve and set aside.

Step 5

To the same large pot over medium heat, add the oil. When the oil is shimmering and hot, add the remaining garlic and onion and cook, stirring occasionally, until softened, 4 minutes. Add the reserved chile paste and continue cooking until the mixture deepens to a dark red color, 5 minutes. Add the lime and grapefruit juices, scrape up the browned bits from the bottom of the pot, and stir until the liquid has reduced slightly, about 1 minute. Add the paprika, epazote, and the reserved broth, turn the heat to low, and simmer for 30 minutes. Season to taste with salt.

Step 6

Make the chochoyotes: In a large bowl, stir together the masa, epazote, salt, and reserved fish meat. Add 1 cup of warm water and stir until a soft, pliable dough forms. (If using masa harina, you may need additional water. Add 1 tablespoon at a time.)

Step 7

Using your hands, roll the dough into 1-inch balls (about 1½ ounces each). (You should have about 36 balls.) Using the tip of your finger, press an indentation into the center of each ball. Cover the chochoyotes with a damp cloth or plastic wrap.

Step 8

Bring the broth back to a boil, then carefully add the chochoyotes without crowding. Cook until the chochoyotes float to the top, about 15 minutes. Season to taste with salt. Divide among bowls, garnish with cilantro, avocado, and onion, and serve immediately.

Continue to Next Story

Want more SAVEUR?

Get our favorite recipes, stories, and more delivered to your inbox.