Colombian fish meatballs are a home-style dish commonly prepared in coastal kitchens, where fresh fish is used in many ways: fried, stewed, simmered, added to soups, or shaped into meatballs. This recipe turns firm white fish into tender, flavorful balls cooked in a tomato, onion, garlic, bell pepper, and herb sauce.
In many Colombian homes, they are made with firm fish such as corvina, sea bass, red snapper, catfish, or carefully cleaned freshwater fish. They are served as a main dish with white rice, coconut rice, fried green plantains, or boiled cassava, making the most of the thick sauce left from cooking.

Ingredients
- 700 g skinless, boneless white fish fillet
- 120 g breadcrumbs or soaked and drained bread (1 cup)
- 1 large egg
- 80 g finely chopped scallions (1 large stalk)
- 60 g grated or finely chopped yellow onion (½ medium onion)
- 15 g crushed garlic (3 cloves)
- 10 g chopped fresh cilantro (¼ cup)
- 5 g salt (1 teaspoon)
- 2 g ground black pepper (½ teaspoon)
- 3 g ground cumin (½ teaspoon)
- 30 g all-purpose flour, for shaping the meatballs (3 tablespoons)
For the sauce:
- 30 ml vegetable oil (2 tablespoons)
- 160 g chopped ripe tomato (2 medium tomatoes)
- 100 g chopped yellow onion (1 small medium onion)
- 80 g chopped red bell pepper (½ medium bell pepper)
- 10 g crushed garlic (2 cloves)
- 5 g ground annatto or achiote (1 teaspoon)
- 300 ml water or fish stock (1¼ cups)
- 6 g salt (1 teaspoon)
- 8 g chopped fresh cilantro (3 tablespoons)
Preparation
- Prepare the fish mixture, finely chop the fish with a knife or pulse it briefly in a food processor until it has a ground texture, but is not completely smooth. Mix it with the breadcrumbs, egg, scallions, yellow onion, garlic, cilantro, salt, black pepper, and cumin until you have a moist mixture that can be shaped.
- Shape the meatballs, take medium portions of the mixture and form balls about the size of a large walnut. Lightly coat them with flour so they hold their shape during cooking, shaking off the excess so the sauce does not become heavy.
- Make the sauce, heat the oil in a shallow pot or wide skillet and sauté the onion, bell pepper, and garlic for 4 to 5 minutes. Add the tomato, annatto, and salt, then cook for another 8 minutes, until the tomato breaks down and the sauce becomes juicy and aromatic.
- Cook the meatballs, pour the water or fish stock into the sauce and let it come to a gentle simmer. Add the meatballs one by one, cover the pot, and cook over low heat for 12 to 15 minutes, moving the pot gently instead of stirring so the meatballs do not break.
- Finish the stew, add the chopped cilantro and cook uncovered for 3 more minutes, until the sauce thickens slightly and the meatballs are firm, juicy, and well coated with the seasoning.
- Serve hot, bring the meatballs to the table with plenty of sauce spooned over them. Serve with rice, fried green plantains, or cassava to enjoy every bit of the stew.
Chef’s Tips
Use fresh fish and remove all bones carefully before chopping or grinding it.
Do not overprocess the fish, because the mixture can become pasty and lose texture.
Use only a light coating of flour; the goal is to help the meatballs hold together, not to create a thick crust.
Cook the sauce first and add the meatballs once it is flavorful, because fish only needs a short cooking time.
Traditional Variations
In some coastal kitchens, a little coconut milk is added to the sauce for a creamier texture and a flavor closer to traditional seafood stews.
They can also be made with freshwater fish, especially in areas where local boneless fish is commonly used.
Some home cooks add chopped sweet pepper to the fish mixture or sauce for aroma without making the dish too spicy.
Traditional Serving Style
Serve Colombian fish meatballs hot, covered with their tomato, onion, and cilantro sauce. The most traditional sides are white rice, coconut rice, fried green plantains, boiled cassava, or a fresh salad.
For drinks, they pair well with fresh lemonade, lulo juice, passion fruit juice, or cold panela water with lime.
Recommended Side Dishes
- White rice
- Coconut rice
- Fried green plantains
- Boiled cassava
- Fresh salad
- Avocado
- Lime wedges
Culinary Fun Fact
Fish meatballs are a good example of resourceful cooking in Colombia’s coastal regions. When there is cleaned fish available or when families want a different way to serve it, the fish is mixed with seasonings and cooked in sauce to create a generous, flavorful meal.
This preparation also makes fish easier to serve to people who prefer not to eat whole pieces with bones, as long as the fish is carefully cleaned before making the mixture.
Frequently Asked Questions
Corvina, sea bass, red snapper, catfish, or any firm white fish works well. The fish should be fresh, skinless, and boneless. Very soft fish can make the mixture too loose and may cause the meatballs to fall apart.
The mixture needs ground fish, egg, and breadcrumbs for structure. A light coating of flour also helps before cooking. Once the meatballs are in the sauce, avoid stirring with a spoon; gently move the pot so they cook without breaking.
Not always. In this home-style Colombian version, they cook directly in the sauce so they stay tender and absorb the flavor of the stew. Some families sear them first in oil, but it is not necessary if the mixture has the right consistency.
Yes, frozen fish can be used if you thaw it completely in the refrigerator and dry it well before grinding. If it holds too much water, the mixture may become weak and require a little more breadcrumb to shape firm meatballs.
