Soups & Stews
This Philadelphia snapper soup recipe delivers the ultimate comfort food experience—where crispy fish topping meets velvety tomato broth in perfect harmony. The secret lies in slow-simmered broth infused with aromatic vegetables, finished with tender snapper that crisps to golden perfection on top.
I first discovered this recipe during a chilly Philadelphia winter, and it quickly became my go-to for hearty, satisfying meals that feel like a hug in a bowl.
The beauty of this soup is in its balance: a rich tomato base that's neither too acidic nor overly sweet, paired with flaky snapper that stays moist beneath its crispy exterior.
Traditional techniques like simmering the broth low and slow ensure deep flavor development, while modern twists like using high-quality canned tomatoes and fresh herbs elevate it beyond basic recipes. The result is a dish that's both restaurant-worthy and simple enough for weeknight dinners.
By the time you serve this soup, you'll have a steaming bowl of creamy tomato broth topped with perfectly crispy fish, each bite offering a contrast of textures and flavors.
The aroma alone will draw everyone to the table, and the first spoonful delivers that comforting combination of tender fish and velvety sauce. This is the kind of recipe that transforms an ordinary meal into something memorable.
Serve with crusty bread to soak up every last drop of that flavorful broth, or pair with a simple green salad for a complete meal. The versatility of this soup makes it perfect for any season—whether you're craving a cozy winter dinner or a light yet satisfying lunch.
Let's get cooking!
Ingredients for philadelphia snapper soup
Creamy tomato base meets crispy snapper—this soup is pure comfort in a bowl.
| Ingredient | Amount | Notes |
|---|---|---|
| Snapper Fillets 🐟 | 1 ½ lb | Skin-on, cut into 1-inch pieces |
| Canned San Marzano Tomatoes 🍅 | 2 cups | Crushed, high-quality preferred |
| Onion 🧅 | 1 whole | Yellow, diced small |
| Carrots 🥕 | 2 medium | Peeled, sliced thin |
| Celery Stalks 🧅 | 3 whole | Diced small, classic mirepoix |
| Garlic Cloves 🧄 | 4 cloves | Minced, fresh preferred |
| Fresh Basil Leaves 🌿 | ¼ cup | Chopped, for finishing |
| Fresh Parsley 🌿 | 0.15 cup | Chopped, for garnish |
| Heavy Cream 🥛 | ½ cup | Full-fat for richness |
| Chicken Stock 💧 | 4 cups | Low-sodium preferred |
| Extra-Virgin Olive Oil 🫒 | ¼ cup | For sautéing vegetables |
| All-Purpose Flour 🌾 | ¼ cup | For dredging fish |
| Salt 🧂 | 1 ½ tsp | Kosher or sea salt |
| Black Pepper 🌶️ | ½ tsp | Freshly ground preferred |
| Dried Thyme 🍃 | ½ tsp | Or 1 tbsp fresh thyme |
The snapper is the star, so grab fresh fillets from a seafood market—they'll have the best quality. Look for bright, firm fish with no fishy smell. Trader Joe's or Whole Foods usually carry good options, or check your local fishmonger. For the tomatoes, San Marzano cans make all the difference—they're sweeter and less acidic. If you can't find them, any high-quality crushed tomatoes will work, but don't skimp here. The broth needs to simmer low and slow for deep flavor, so chicken stock with good bone content is ideal—look for brands like Pacific Foods or Kitchen Basics for the best flavor.
No fresh basil? Dried works at half the amount, but fresh is worth hunting down. The flour for dredging should be all-purpose, not cake flour—it creates a better crispy crust. If you're short on time, panko breadcrumbs make an excellent substitute for the flour coating. The cream can be swapped for half-and-half or coconut milk if you're watching fat, though full-fat gives that luxurious texture. For the vegetables, pre-cut mirepoix mixes from the grocery store save time, but fresh is always better. If your carrots are tough, soak them in cold water for 10 minutes before slicing for tender results.
This soup tastes even better the next day—make a double batch and freeze half. Store leftovers in the fridge for 4-5 days, covered tightly. The crispy fish topping loses its crunch when reheated, so always make it fresh before serving. For freezing, portion the broth into containers and store the fish separately—just reheat the broth and crisp the fish again in a hot pan with a little oil. The aroma alone will have everyone rushing to the table!
Why You'll Love This Recipe
- One-Pot Magic: I swear by this—just toss in the snapper, San Marzano tomatoes, and that classic sofrito (onion, carrots, celery) into one pot, and let it simmer. No extra pans, no stress. The fish cooks right in the broth, flaking apart like it’s been braising all day, even though it’s ready in 25 minutes.
- Tomato-Broth Bliss: That canned San Marzano? Total game-changer. The sweet, rich acidity cuts through the snapper’s natural oiliness, while the tomatoes deepen into a velvety, slightly sweet broth. Honestly, the first time I tasted it, I thought, "Why haven’t I been doing this all along?"
- Lunchbox Hero: Between us, this soup is my go-to for meal prep. The flavors only get better the next day—perfect for packing in a thermos or reheating for a quick weeknight dinner. (Yes, even on a Tuesday night.) The snapper stays tender, and the veggies hold their shape, so it’s just as satisfying cold or warm.
- Budget-Friendly Catch: Fresh snapper can be pricier, but this recipe stretches it far. A single fillet feeds two for lunch, and the canned tomatoes and veggies keep costs low. I’ll be real: my grocery budget thanks me every time I make this instead of ordering takeout. Plus, the leftovers freeze like a dream—just add a splash of water when reheating.
Step-by-step instructions for Philadelphia snapper soup
This method delivers a perfect balance of crispy fish topping and velvety tomato broth—every spoonful is comfort in a bowl.
Sauté the Vegetable Base
Heat the extra-virgin olive oil in a large pot over medium heat. Add the diced onion, sliced carrots, and diced celery stalks (your classic mirepoix). Cook for 8-10 minutes, stirring occasionally, until the vegetables soften and begin to brown—this develops deep flavor. Add the minced garlic cloves and cook for another 30 seconds until fragrant, being careful not to let it burn.
Stir in the dried thyme, salt, and black pepper, then pour in the crushed canned San Marzano tomatoes. Let the mixture simmer for 5 minutes until the tomatoes break down slightly and the vegetables are tender but still hold their shape. This step builds the aromatic foundation for your soup.
Dredge and Crisp the Snapper
While the vegetable base simmers, pat the snapper fillets completely dry with paper towels—this is crucial for crispiness. Place the all-purpose flour in a shallow dish and season lightly with salt and pepper. Dredge each piece of snapper in the flour, pressing gently to adhere evenly. Shake off any excess flour.
Heat 2 tablespoons of extra-virgin olive oil in a separate skillet over medium-high heat until shimmering. Add the dredged snapper pieces in a single layer and cook for 2-3 minutes per side until golden brown and crispy. The skin should release easily from the pan when ready. Transfer the cooked snapper to a plate and set aside—we'll add it back later.
Build the Creamy Broth
Return the pot of vegetable-tomato mixture to the stove and pour in the chicken stock. Bring to a gentle simmer and let it cook for 10 minutes to allow the flavors to meld. Reduce the heat to low and stir in the heavy cream, whisking gently until smooth. The soup should now have a luxurious, velvety texture with a rich tomato depth.
Taste and adjust the seasoning with more salt or pepper if needed. The broth should be flavorful but not overwhelming—you want the snapper and herbs to shine. Keep the soup warm while you prepare the final garnishes.
Assemble and Finish
Return the crispy snapper pieces to the pot and gently stir to coat them in the creamy broth. The contrast of the warm, creamy soup and the crispy fish topping is what makes this dish truly special. Ladle the soup into bowls, making sure each serving gets at least one piece of snapper.
Garnish each bowl with the chopped fresh basil leaves and chopped fresh parsley just before serving. The bright herbs cut through the richness of the cream and tomatoes, adding a fresh finish. Serve immediately while the snapper is still crispy and the broth is steaming hot—this soup is best enjoyed right away.
Pro Tips For Making Philadelphia Snapper Soup
- Sear Snapper First: Hit the fillets with a quick sear in oil before adding liquid—just 2-3 minutes per side until golden. I learned this the hard way: skipping the sear leaves the fish bland and mealy, while this step locks in flavor and texture. Use medium-high heat and don’t overcrowd the pan.
- Sweat, Don’t Sauté: Cook the onion, carrots, and celery low and slow with a splash of water or broth until the veggies are soft but not browned. After burning two batches of soup from rushing this, I now swear by 8-10 minutes on low heat—it builds depth without bitterness.
- Crush Those Tomatoes: Drain the San Marzano cans but don’t skip mashing the tomatoes with your hands or a fork before adding them to the pot. This releases more juice and blends the flavors seamlessly—no clumpy texture, just rich, velvety base.
- Simmer, Don’t Boil: Keep the soup at a gentle simmer (tiny bubbles, occasional swirls) once everything’s combined. Boiling toughens the snapper and makes the broth cloudy. If it’s too vigorous, lower the heat or add a splash of cold water—your future self will notice the difference.
Make-ahead tips for this dish
Broth Prep Ahead
Make the vegetable-tomato base up to 2 days in advance and store it in an airtight container in the refrigerator. It will deepen in flavor as it sits—just reheat gently before adding the cream and snapper.
I like to double the batch and freeze half for future meals. Use a glass jar for storage to prevent absorption of fridge odors. 💡
Fish Prep Strategy
Dredge and crisp the snapper just before serving—it loses its crunch when reheated. However, you can prep the fish ahead by cutting it into pieces and storing them in the fridge for up to 1 day.
Pat them dry right before dredging for the best texture. For extra efficiency, use panko breadcrumbs instead of flour—they crisp faster and add a delightful crunch. 🐟
Freezer-Friendly Broth
Portion the finished broth (without fish) into freezer-safe containers, leaving ½-inch headspace for expansion. Label with the date—it keeps for 3 months without losing quality. When ready to serve, thaw overnight in the fridge, then reheat on the stovetop.
The texture remains velvety, though you'll need to crisp fresh snapper separately. ❄️
Make-Ahead Garnishes
Chop the fresh basil and parsley ahead of time and store them in separate airtight containers with a paper towel to absorb moisture. Keep them refrigerated for up to 3 days.
For extra freshness, store the herbs in ice cube trays with a little water, then freeze. Thaw quickly under cold water before using—they'll retain their vibrant color and flavor. 🌿
One-Pot Prep Day
For maximum efficiency, prep everything in one pot on a busy day. Sauté the vegetables, then remove them and store in the fridge. When ready to cook, return them to the pot, add stock and cream, and simmer.
Keep the snapper separate until serving—this keeps the process streamlined. I use this method when I have limited time but still want a restaurant-quality meal. 💪
Portion Control Tips
Use ramekins or small oven-safe bowls to portion the soup ahead of time. Add the crispy snapper just before baking at 375°F for 8-10 minutes—this keeps the fish perfectly crispy while reheating the broth.
Perfect for meal prep lunches or dinner parties where timing matters. Store assembled portions in the fridge for up to 1 day before baking. 🍽️
Nutrition facts
Frequently asked questions
Can I substitute snapper with another type of fish?
If you can't find snapper, try cod, halibut, or sea bass—they hold up well to the crispy coating. Avoid delicate fish like tilapia, which can fall apart. For a richer flavor, salmon works but may require 1-2 minutes less cooking time per side to prevent overcooking.
How do I make this soup dairy-free?
Swap the heavy cream for coconut milk or cashew cream (blend soaked cashews with water) to maintain richness. Use full-fat versions for the best texture. For extra creaminess, stir in 1 tablespoon nutritional yeast—it adds a cheesy flavor without dairy. The soup will still be velvety but with a lighter profile.
Why does my snapper turn rubbery instead of crispy?
Rubbery snapper usually means it wasn't dry enough before dredging or cooked at too low heat. Pat the fish completely dry with paper towels and use medium-high heat in the pan. Avoid overcrowding the pan—cook in batches if needed. Also, ensure the flour coating is even and thin (too thick = soggy).
Can I make this soup in an Instant Pot?
Yes! Sauté the vegetables as directed, then add tomatoes, stock, and cream. Cook on high pressure for 5 minutes, then quick-release. For the fish, crisp it separately in a skillet after the soup is done—it won’t hold up well to pressure cooking. The broth will be faster but slightly less developed in flavor compared to stovetop simmering.
What’s the best way to reheat leftovers?
Reheat the broth (without fish) on the stove over low heat until warm. Crisp fresh snapper separately in a hot pan with 1 tablespoon oil for 2 minutes per side, then place on top of the reheated soup. The contrast of warm broth and crispy fish is key! Store leftovers (without fish) in the fridge for 4-5 days.
