Moqueca (pronounced moh-KEH-kah) is one of Brazil’s most beloved national dishes, born in the coastal state of Bahia where West African culinary traditions met Indigenous ingredients and Portuguese influence. At its heart, it is deceptively simple: firm white fish and shrimp simmered in a lush broth of coconut milk, ripe tomatoes, sweet peppers, onion, garlic, lime, and dendê (red palm oil), finished with a snowfall of fresh cilantro. What makes it extraordinary for nutrition is that it is built almost entirely from ingredients that are among the most nutrient-dense foods on earth, and they happen to taste sensational together.
We built this recipe specifically to maximize the nutrients most commonly lacking in modern diets. Wild-caught cod or halibut supplies heme-adjacent vitamin D and long-chain omega-3 fatty acids (EPA and DHA) in meaningful, measurable amounts. The shrimp adds zinc, iodine, and additional selenium. Coconut milk provides medium-chain triglycerides that improve fat-soluble vitamin absorption, while dendê oil delivers the carotenoids beta-carotene and lycopene at concentrations that rival tomato paste. Every ingredient is doing double duty: flavor and function.
What sets Calibrated Cuisine’s version apart is the precision. We use 600g of wild-caught fish per four servings, a quantity that most recipes skimp on, because that is the threshold at which a single bowl genuinely crosses the 85% vitamin D mark. The spice ratios are tuned so the broth is bold enough to serve proudly at a dinner party but the fish remains the clear star. Choose stovetop for the most authentic texture and depth of flavor, slow cooker when you want the stew waiting for you at the end of a long day, pressure cooker when speed is the priority, or the oven method for a stunning hands-off presentation baked right in a clay pot or Dutch oven.
4
servings
Ingredients
- 600 gwild-caught cod or halibut fillets, cut into 5cm chunks
- 300 glarge raw shrimp, peeled and deveined
- 400 mlfull-fat coconut milk (one standard can)
- 400 gcanned whole plum tomatoes, crushed by hand
- 2 tbspdendê oil (red palm oil), or substitute 1 tbsp sweet paprika-infused olive oil
- 2 tbspextra-virgin olive oil
- 1 largeyellow onion, thinly sliced into half-moons
- 1 largered bell pepper, thinly sliced
- 1 largegreen bell pepper, thinly sliced
- 5 clovesgarlic, minced
- 1 mediumripe tomato, thinly sliced into rounds
- 3 tbspfresh lime juice (about 2 limes), plus wedges for serving
- 1 tspground cumin
- 0.5 tspsweet smoked paprika
- 0.5 tspground turmeric
- 1 small bunchfresh cilantro, stems finely chopped, leaves reserved for garnish
- 240 mllow-sodium fish stock or water
- —Fine sea salt and freshly ground black pepper to taste
Instructions
🔧 Equipment
- Pat the fish chunks thoroughly dry with paper towels. In a bowl, toss the fish with 2 tablespoons of lime juice, half the minced garlic, a generous pinch of sea salt, and black pepper. Let it marinate at room temperature for 15 minutes while you prepare the other ingredients.
- Heat a wide, heavy-bottomed pan or Dutch oven over medium heat. Add the olive oil. Once shimmering, add the onion and a pinch of salt. Cook, stirring occasionally, for 7 to 8 minutes until the onion is soft and translucent but not browned. Add the remaining garlic, cumin, smoked paprika, and turmeric; stir constantly for 90 seconds until the spices bloom and smell fragrant.
- Add the red and green bell pepper strips to the pan. Cook for 4 minutes, stirring occasionally, until they just begin to soften. Pour in the crushed canned tomatoes and fish stock. Stir to incorporate all the browned bits from the pan bottom. Bring to a gentle simmer and cook uncovered for 8 minutes, allowing the tomato base to reduce and concentrate slightly.
- Pour in the coconut milk and stir in the dendê oil. Taste the broth and adjust salt, pepper, and the remaining 1 tablespoon of lime juice. Bring back to a steady simmer over medium-low heat. Lay the fresh tomato rounds across the surface of the broth, then arrange the marinated fish chunks on top. Do not stir. Cover the pan with a lid and cook for 7 minutes.
- Uncover the pan, nestle the raw shrimp between the fish pieces, and scatter the cilantro stems over the top. Replace the lid and cook for a further 4 to 5 minutes until the shrimp are pink and curled and the fish flakes easily at its thickest point. Remove from heat. Rest for 2 minutes before serving topped with fresh cilantro leaves and lime wedges alongside white rice or farofa.
- Skip marinating the fish in this method. Instead, season the raw fish chunks and shrimp separately with salt, pepper, the full 3 tablespoons of lime juice, and minced garlic. Refrigerate covered until needed.
- Directly into the slow cooker insert, combine the sliced onion, red and green bell pepper strips, crushed canned tomatoes, fish stock, coconut milk, dendê oil, olive oil, cumin, smoked paprika, turmeric, and cilantro stems. Stir everything together thoroughly, then lay the fresh tomato rounds across the surface. Cover and cook on Low for 2 hours 30 minutes to 3 hours, until the peppers are fully tender and the broth is aromatic and slightly thickened.
- Open the lid and use a spoon to taste and adjust seasoning. The broth should taste bold at this point since seafood will dilute it slightly. Gently nestle the seasoned fish chunks into the broth, pressing them just below the surface. Replace the lid and continue cooking on Low for 30 minutes.
- Add the shrimp to the slow cooker, distributing them around the fish. Replace the lid and cook on Low for a final 15 minutes, until the shrimp are fully pink and the fish is opaque and flaking. Do not stir aggressively or the fish will break apart.
- Turn off the slow cooker and allow the stew to rest with the lid slightly ajar for 5 minutes. Ladle carefully into bowls, keeping the fish pieces intact, and finish with fresh cilantro leaves and lime wedges.
- Set your Instant Pot or electric pressure cooker to Sauté mode on Normal heat. Add the olive oil. When the display reads Hot, add the onion and a pinch of salt. Sauté for 5 minutes, stirring regularly. Add the minced garlic, cumin, smoked paprika, and turmeric, and sauté for 1 minute more until fragrant.
- Add the bell pepper strips and sauté for 2 minutes. Pour in the fish stock and use a wooden spoon or silicone spatula to scrape up any browned bits from the bottom of the insert. This deglazing step is critical for pressure cookers to prevent a burn warning. Add the crushed tomatoes, coconut milk, dendê oil, and the full 3 tablespoons of lime juice. Stir to combine.
- Lay the fresh tomato rounds on top of the liquid. Season the fish chunks with salt and pepper, then submerge them gently into the broth. Do not add the shrimp yet. Cancel Sauté mode. Secure the lid and set the pressure release valve to Sealing. Select Pressure Cook (High Pressure) for 3 minutes.
- As soon as the cooking cycle ends, perform an immediate Quick Release by carefully moving the valve to Venting. Once the steam has fully escaped and the float valve drops, open the lid. Switch back to Sauté mode on Low.
- Add the seasoned shrimp to the stew and gently stir them in. Sauté on Low for 3 to 4 minutes, stirring once, just until the shrimp are pink and cooked through. Cancel Sauté, scatter the cilantro stems into the pot, taste for final seasoning, and serve immediately topped with fresh cilantro leaves and lime wedges.
- Preheat your oven to 190C (375F). Pat the fish dry and marinate as in the stovetop method: toss with 2 tablespoons of lime juice, half the garlic, salt, and pepper for 15 minutes while you assemble the base.
- Place a Dutch oven or large clay pot (if using an unglazed clay pot, soak it in water for 15 minutes first) over medium heat on the stovetop. Add the olive oil and sauté the onion for 6 minutes until soft. Add the remaining garlic, cumin, smoked paprika, and turmeric and stir for 1 minute until the spices are fragrant and coating the onion.
- Add the bell pepper strips and cook for 2 minutes. Pour in the fish stock, scraping up any fond from the bottom. Add the crushed tomatoes, coconut milk, dendê oil, and remaining 1 tablespoon of lime juice. Stir to combine and bring just to a simmer. Taste and season assertively with salt and pepper, as the oven will mellow the flavors.
- Remove the pot from the heat. Scatter the cilantro stems over the broth. Layer the fresh tomato rounds across the surface, then arrange the marinated fish chunks on top, pressing them partially into the liquid. Nestle the raw shrimp among the fish pieces. Drizzle a final thin thread of olive oil over the top.
- Cover the pot tightly with its lid (or seal clay pot with foil under the lid for a tight seal) and transfer to the preheated oven. Bake for 25 to 30 minutes, until the fish is opaque and flakes at its thickest point and the shrimp are fully pink. Remove from the oven, rest covered for 3 minutes, then bring the pot directly to the table. Remove the lid tableside for a dramatic release of steam and aroma, and finish with fresh cilantro leaves and lime wedges.
Nutrition Breakdown
Per 1 serving (makes 4)
Vitamins & Minerals
% Daily Value based on a 2,000 calorie diet (FDA reference)
🧬 Essential Amino Acids
% of recommended daily intake (RDA) per serving
🛡 Antioxidant Profile
The Nutrition Science
The vitamin D in this dish comes almost entirely from the wild-caught fish. Cod and halibut are among the very few natural dietary sources of vitamin D3 (cholecalciferol), the same form produced by human skin on UV exposure. A 150g serving of wild-caught cod provides roughly 400 to 450 IU of vitamin D3, and when combined with the smaller contribution from shrimp, a single bowl of this stew delivers approximately 680 IU, or about 85% of the 800 IU Daily Value. Critically, the surrounding fat from coconut milk and dendê oil matters enormously: vitamin D is fat-soluble, and studies consistently show that consuming it alongside dietary fat increases absorption by 32 to 57% compared to a low-fat meal.
The omega-3 story in moqueca is equally compelling. Wild-caught cold-water fish like cod and halibut supply EPA (eicosapentaenoic acid) and DHA (docosahexaenoic acid), the long-chain omega-3s directly usable by the heart, brain, and immune system without the conversion step required by plant-based ALA. The roughly 2.1g of EPA plus DHA per serving in this recipe comfortably exceeds the 1.1 to 1.6g adequate intake recommended by the National Academies. These fatty acids work synergistically with astaxanthin from the shrimp, which protects the polyunsaturated fatty acids from lipid peroxidation both in the stew during cooking and in the digestive system after consumption.
Selenium is the overlooked hero of this recipe. The combination of cod and shrimp provides well over 100% of the daily selenium requirement per serving. Selenium is essential for the synthesis of glutathione peroxidase, the body’s primary endogenous antioxidant enzyme, and for the conversion of thyroid hormone T4 to its active T3 form. Iodine, also supplied abundantly by the shrimp, completes the thyroid support picture. Together, this single bowl delivers a seafood-based micronutrient package that would be extremely difficult to replicate from plant foods alone.
Pro Tips
- Buy the freshest fish possible and ask your fishmonger for skin-off fillets cut to a uniform thickness so all pieces cook in exactly the same time. Frozen wild-caught cod that has been properly thawed overnight in the refrigerator is nutritionally equivalent to fresh.
- Dendê oil is non-negotiable for authentic Bahian flavor and color, and it contributes significantly to the beta-carotene content. Find it at Brazilian grocery stores or online. If you genuinely cannot source it, whisk 1 tablespoon of sweet paprika into 2 tablespoons of olive oil and use that instead, but know that the carotenoid contribution will be lower.
- Do not stir the stew once the fish goes in, regardless of cooking method. Moqueca is traditionally served with large intact pieces of fish, and stirring breaks them apart. Use a wide spoon to ladle servings gently, scooping from the bottom up to keep pieces whole.
- For an additional vitamin D boost with no recipe changes, swap the fish stock for a homemade stock made from the bones and skin of wild-caught salmon, which leaches additional D3 into the liquid during simmering.







this looks amazing and i love that youre pairing fish with tomato, because that vitamin C from the tomatoes is gonna help with mineral absorption overall – though i have to admit im mainly excited about the iron content in the cilantro and peppers alongside that vitamin D and selenium. my ferritin has been creeping up and down, and i find these kinds of one bowl meals where the ingredients actually complement each other nutritionally are total game changers. did you notice any difference in how you felt after eating it compared to fish cooked other ways?
Log in or register to replyI love your point about vitamin C enhancing mineral absorption, Francesca – that’s such an important detail that doesn’t get talked about enough! I do want to gently flag that while cilantro and peppers have iron, the nightshade content in this recipe might be something to consider if you’re following a stricter protocol like I am, since I’ve found nightshades can worsen my inflammation markers even though they’re nutrient-dense. Have you noticed whether the tomatoes and peppers affect your ferritin levels one way or the other, or does the omega-3 and mineral synergy outweigh any potential inflammatory response for you? I’m curious because I’d love to adapt this for A
Log in or register to replyOh, this sounds absolutely wonderful! I’ve been experimenting with fatty fish in coconut broth for years now, and I’ve noticed such a meaningful difference in my CRP levels when I combine fish with turmeric and tomatoes like this. The dendê oil is a beautiful touch too, since those plant-based fats really help with nutrient absorption. I’m definitely making this soon and will probably stir in some fresh turmeric paste at the end to boost the anti-inflammatory compounds even more, but thank you for highlighting those mineral details, especially the selenium and magnesium which my joints really respond to!
Log in or register to reply