This Tomato Poached Fish with Shallot Oil is one of those dishes that’s really simple to make but tastes like it came from a restaraunt.

It features white fish poached in a savory, umami tomato sauce then drizzled with a fragrant shallot oil on top. This dish is comforting, flavorful, and ready in under 30 minutes, making it a perfect weeknight dinner your family will love!
What is Tomato Poached Fish?
Tomato poached fish is a dish where tender white fish fillets are gently simmered in a rich, savory tomato sauce until flaky and perfectly cooked. This method keeps the fish incredibly moist while infusing it with all the tangy, umami flavors of the sauce.
While poaching fish in tomato sauce is common in many coastal cuisines, this recipe leans on simple Asian-inspired flavors like soy sauce, fish sauce, and lime to create a balance of salty, tangy, and slightly spicy notes. It’s the kind of dish that feels light yet satisfying, perfect for both quick dinners and special meals.

Why You’ll Love Tomato Poached Fish
- Quick and Easy: This poached fish in tomato sauce comes together in under 30 minutes with just one pan.
- Flavor-Packed: The combination of tangy tomatoes, savory fish sauce, and aromatic shallot oil makes every bite mouth-watering.
- Healthy and Light: Poaching the fish keeps it tender and light, making it a nourishing and healthy meal.
- Family Favorite: It’s mild enough for everyone to enjoy, yet flavorful enough to impress. The shallot oil can be a slightly spicy so you can skip it for those who prefer this dish non-spicy.
- Versatile: Works beautifully with different white fish, and you can easily customize it with your favorite herbs or veggies.
Equipment You’ll Need
- Large skillet
- Small saucepan or pot
- Fresh Mesh Strainer
- Wooden spoon
- Tongs or spatula
- Serving bowl
Ingredients
- Avocado Oil: Used to make the shallot oil — it has a high smoke point and adds a mild, buttery flavor.
- Shallot: Adds sweetness and depth when crisped in oil, creating an aromatic base.
- Garlic: Infuses the oil with savory flavor and adds crunch when fried.
- Red Pepper Flakes: Adds a gentle heat that balances the richness of the shallot oil.
- Soy Sauce: Brings salty, umami depth to both the oil and the tomato broth.
- San Marzano Tomatoes: I prefer using these canned tomatoes because they are naturally sweet and are available year-round!
- Salt and Black Pepper: Enhances all the flavors in the sauce.
- Low-Sodium Chicken Broth: Lightens and balances the tomato flavor while adding a savory backbone.
- Fish Sauce: Adds that signature umami punch for depth and complexity.
- Sugar: A touch of sweetness to balance the acidity of the tomatoes.
- Lime Juice: Brightens the dish and ties all the flavors together.
- White Fish: Use cod, halibut, or tilapia — these hold up well and become tender when poached.
- Cilantro: Adds freshness and color as a garnish.
- Limes: Extra wedges make it zesty and refreshing when served.
- White Rice: The perfect base to soak up all that delicious tomato poached fish and shallot oil.
Customizations
- Different Fish: Swap white fish for snapper or seabass — just adjust cooking time slightly.
- Extra Veggies: Add spinach, zucchini, or mushrooms to the tomato broth for a heartier version.
- More Heat: Stir in chili paste or extra red pepper flakes in the tomato sauce for a spicy kick.
- Citrus Twist: Try lemon juice instead of lime for a brighter flavor profile.
How to Make Tomato Poached Fish with Shallot Oil
Make the Shallot Oil
Heat avocado oil in a small pot over medium-high heat. Add the thinly sliced shallots and garlic, cooking until golden and crisp, about 5 minutes.
Strain, saving both the oil and crispy bits separately. Turn off the heat, then stir in red pepper flakes and soy sauce into the hot oil.
Set aside to cool slightly.
Cook the Tomato Base
In a large skillet, add the San Marzano tomatoes and gently break them up with a wooden spoon. Season with salt and pepper.
Let them cook over medium heat until the sauce thickens and reduces slightly, about 3–4 minutes.
Build the Poaching Broth
Pour in chicken broth, fish sauce, soy sauce, sugar, and lime juice. Stir to combine and simmer for 2–3 minutes, allowing the flavors to meld into a savory, balanced sauce.
Poach the Fish
Nestle the fish fillets into the tomato broth. Cover and let them cook until the fish is opaque and flakes easily with a fork, about 4–7 minutes depending on thickness.
Be careful not to overcook — the tomato poached fish should be tender and flaky, not tough or rubbery.
Assemble and Serve
Gently transfer the poached fish and tomato sauce to a serving bowl.
Drizzle with the fragrant shallot oil and top with the crispy shallots and garlic. Garnish with fresh cilantro and lime wedges.
Serve warm with steamed white rice for a comforting, flavorful meal.

Storage
Store leftover tomato poached fish in an airtight container in the fridge for up to 2 days.
Tips to Make the Perfect Tomato Poached Fish with Shallot Oil
- Don’t Overcook the Fish: Fish continues cooking even after being removed from heat, so stop once it flakes easily.
- Use Fresh Lime Juice: It brightens the tomato sauce and balances the savory shallot oil beautifully.
- Make the Shallot Oil Ahead: Store it in a jar — it keeps well and adds instant flavor to other dishes, too.
Frequently Asked Questions (FAQs)
What type of fish is best used for Tomato Poached Fish?
White fish like cod, halibut, or tilapia work best for tomato poached fish. They hold up well during poaching and absorb the sauce beautifully.
How do I make sure the fish is not overcooked?
Poach it gently — once it turns opaque and flakes with a fork, remove it from the heat immediately. Overcooking will make the fish rubbery.
Can I skip the shallot oil and use store-bought chili oil?
Yes! Store-bought chili oil works fine if you’re short on time, though homemade shallot oil gives a richer, more aromatic flavor.
Can I use fresh tomatoes instead of canned?
Absolutely! Just use ripe, juicy tomatoes and simmer a bit longer until they break down into a sauce.
Can I make this recipe spicy?
Of course! Add red pepper flakes or mix in chili paste to the tomato sauce for an extra kick.
Can I meal prep this Tomato Poached Fish dish?
Yes — poach the fish and store it separately from the sauce. Combine and reheat gently before serving to keep it tender.
Related Recipes You’ll Love
- Coconut Lime Poached Fish
- Thai Red Curry Poached Fish
- Poached Chicken with Ginger Scallion Sauce
- Poached Chicken with Shallot Oil Sauce
- Poached Chicken with Soy Chili Oil

Tomato Poached Fish with Shallot Oil
Ingredients
Shallot Oil
- 5 tablespoon avocado oil
- 1 shallot thinly sliced
- 3 cloves garlic thinly sliced
- 1 teaspoon red pepper flakes
- 1 tablespoon soy sauce
Main Ingredients
- 2 cups San Marzano tomatoes canned and peeled
- ½ teaspoon salt
- Freshly ground black pepper
- 1 cup low sodium chicken broth
- 2 tablespoon fish sauce
- 1 tablespoon soy sauce
- 2 teaspoon sugar
- ½ lime juiced
- 2 pounds white fish cod, halibut, tilapia etc.
For Serving
- Shallot oil
- Crispy shallot and garlic
- Chopped cilantro
- Limes
- White rice
Instructions
- Heat avocado oil in a small pot over medium-high heat. Add shallots and garlic, and cook until golden and crisp, about 5 minutes. Strain, reserving both the oil and the crispy shallots and garlic separately. Turn off the heat, then stir red pepper flakes and soy sauce into the hot oil. Set aside.5 tablespoon avocado oil, 1 shallot, 3 cloves garlic, 1 teaspoon red pepper flakes, 1 tablespoon soy sauce
- In a large skillet, add San Marzano tomatoes and use a wooden spoon to gently break up the tomatoes. Season with salt and black pepper. Cook over medium heat until the mixture thickens and becomes saucy, about 3-4 minutes.2 cups San Marzano tomatoes, ½ teaspoon salt, Freshly ground black pepper
- Stir in chicken broth, fish sauce, soy sauce, sugar, and lime juice. Simmer for 2–3 minutes until the flavors meld and the broth slightly reduces.1 cup low sodium chicken broth, 2 tablespoon fish sauce, 1 tablespoon soy sauce, 2 teaspoon sugar, ½ lime
- Add the fish fillets into the tomato broth. Cover and cook until the fish is opaque and flakes easily with a fork, about 4-7 minutes, depending on thickness. Be careful not to overcook the fish as it will become tough and rubbery.2 pounds white fish
- Gently transfer the fish and tomato mixture to a serving bowl. Drizzle with the prepared shallot oil and top with the crispy shallots and garlic. Garnish with chopped cilantro and lime wedges. Serve with white rice.Shallot oil, Crispy shallot and garlic, Chopped cilantro, Limes, White rice





Leave a Reply