To begin, in a large bowl, combine the white fish fillets with lime juice, minced garlic, salt, and black pepper. Mix well to coat the fish evenly. Let the fish marinate for 20-30 minutes in the refrigerator. This helps infuse the fish with flavour while keeping it tender.
In a large heavy bottomed pan or clay pot, heat 2 tablespoons of olive oil over medium heat. Add the sliced onion and cook for about 3-4 minutes until soft and translucent. Stir occasionally to prevent browning, as you want the onions to remain sweet and delicate.
Add the sliced red and yellow bell peppers to the pan, stirring to combine with the onions. Cook for an additional 3-4 minutes until the peppers are slightly softened. This step adds vibrant colour and sweetness to the stew.
Add the chopped tomatoes to the pan, followed by paprika and ground cumin. Stir well to combine. Allow the mixture to cook for another 5 minutes, letting the tomatoes break down and release their juices. This forms the flavourful base of the moqueca.
Pour in the coconut milk and fish stock, stirring gently to combine. If using palm oil for a more authentic Brazilian flavour, add it at this stage. Bring the mixture to a gentle simmer and let it cook for 10 minutes to allow the flavors to meld.
After the broth has simmered, carefully add the marinated fish fillets into the pan, laying them in a single layer. Ensure the fish is submerged in the broth. Cover the pan and let the fish cook for 10-12 minutes, or until it becomes opaque and flakes easily with a fork.
Once the fish is cooked, gently stir in half of the chopped cilantro. Taste the broth and adjust seasoning with additional salt or lime juice, if needed. The lime adds a fresh, tangy balance to the rich coconut and fish flavors.
Serve the moqueca hot, garnished with the remaining cilantro and lime wedges on the side. Moqueca is traditionally accompanied by white rice and farofa (toasted cassava flour). You can also offer hot sauce or chili oil for those who enjoy an extra kick of heat.