Side Dishes
This fish and black beans recipe transforms a simple weeknight dinner into a bold, flavor-packed meal that balances tender protein with hearty legumes. The secret lies in a smoky cumin marinade that infuses the fish while the black beans simmer into a rich, slightly sweet side.
I developed this dish after realizing how often we underestimate the power of combining fish and beans—a protein duo that delivers both nutrition and depth.
The beauty of this recipe is its versatility—whether you're serving it as a standalone bowl or pairing it with rice, the flavors shine. The fish bakes to perfect flakiness while the black beans develop a tender texture with just enough bite.
What sets this apart is the cumin-kissed sauce that ties everything together, adding warmth and complexity without overpowering the natural flavors of the ingredients.
By the time you're done, you'll have a dish that's restaurant-worthy yet simple enough for any night of the week. The fish stays moist and flavorful, the black beans are perfectly seasoned, and the smoky aroma will have everyone asking for seconds.
This is the kind of meal that feels indulgent but comes together with minimal effort—proof that bold flavors don't require complicated techniques.
Serve it over a bed of fluffy rice or with a side of roasted vegetables for a complete meal. The best part? Leftovers reheat beautifully, making this a perfect option for meal prep. Let's get cooking!
Ingredients for fish and black beans
Nine simple ingredients create this bold, smoky fish and black beans dish that's perfect for any weeknight.
| Ingredient | Amount | Notes |
|---|---|---|
| White Fish Fillets 🐟 | 1 ½ lb | Firm white fish like cod or halibut |
| Canned Black Beans 🥫 | 1 can | 15 oz, drained and rinsed |
| Yellow Onion 🧅 | 1 whole | Medium-sized, diced small |
| Garlic Cloves 🧄 | 4 cloves | Fresh, minced |
| Ground Cumin 🌿 | 1 tbsp | Toasted for deeper flavor |
| Smoked Paprika 🌶️ | 1 tbsp | For authentic smoky flavor |
| Olive Oil 🫒 | ¼ cup | Extra-virgin preferred |
| Lemon Juice 🍋 | 2 tbsp | Freshly squeezed |
| Tomato Paste 🍅 | 2 tbsp | No-sugar-added preferred |
| Vegetable Broth 💧 | 1 cup | Low-sodium preferred |
| Salt 🧂 | 1 tsp | Kosher or sea salt |
| Black Pepper 🌶️ | ½ tsp | Freshly ground preferred |
| Fresh Cilantro 🌿 | ¼ cup | Chopped, for garnish |
| Lime 🍈 | 1 whole | Cut into wedges |
| Jalapeño Pepper 🌶️ | 1 whole | Seeded and diced, optional |
The fish is the star here, so pick firm white fillets like cod or halibut—they stay together better than delicate fish. Trader Joe's or Whole Foods always have great options, but your regular grocery store seafood counter works too. Look for fillets with a vibrant color and no fishy smell. The black beans? Low-sodium canned beans save you time, but if you're feeling ambitious, dried beans work too—just soak them overnight. The cumin and smoked paprika are non-negotiable for that authentic smoky flavor, so grab them from the bulk spice section if you can—Penzeys or local Latin markets have the best quality.
No smoked paprika? Regular paprika plus a pinch of liquid smoke gets you close. Fresh out of garlic? Garlic powder at half the amount works in a pinch, but fresh is absolutely essential for that depth of flavor. The tomato paste can be the squeeze-tube kind from Trader Joe's—it's perfect for small amounts and keeps forever. If you're serving this with rice, you can skip the jalapeño (or use less) since it might be too spicy. The lime wedges are for serving, so don't forget them—they brighten up every bite. And if you're worried about the fish drying out, pat it dry with paper towels before baking.
This dish reheats beautifully—honestly tastes better the next day as the flavors meld. Store leftovers in an airtight container for up to 3 days in the fridge. The black beans and sauce keep well, so I often make extra to freeze for quick meals later. The fish, though? Eat it fresh or within 2 days—it's not a leftovers kind of protein. For meal prep, portion the beans and sauce separately and bake the fish fresh when you're ready to serve. Trust me, it's worth the extra minute.
Why You'll Love This Recipe
- One-Pan Magic: I swear by this when I’m too tired to scrub pots. Toss the fish, beans, and onions in one skillet—no extra dishes, no stress. The cumin and garlic cloves release their aroma while everything cooks, turning my kitchen into a mini fiesta.
- Craving-Worthy Crunch: That crispy skin on the fish? Absolute perfection. The black beans soak up the smoky cumin and caramelized onions like a sponge, while the garlic adds a punch that lingers. It’s the kind of dish that disappears faster than my willpower when I’m hungry.
- Meal Prep MVP: Between us, this is my go-to for lunches all week. The flavors actually improve the next day—yes, really. Pack it in containers, and you’ve got a protein-packed, budget-smart meal that’s still restaurant-quality. (My coworkers think I’m a culinary genius.)
- Budget-Friendly Feast: Honestly, it’s a steal. White fish fillets are often cheaper than chicken, and canned beans? A pantry staple that never lets me down. With just a few spices and an onion, I feed four people for under $15—and still feel like I’m treating them to something special.
Step-by-step instructions for smoky cumin-kissed fish and black beans
This vibrant dish comes together faster than you'd think—crispy fish meets smoky beans in under 30 minutes!
Sauté the Aromatics Until Fragrant
Heat the 0.25 cup olive oil in a large skillet over medium heat until shimmering but not smoking. Add the diced yellow onion and cook for 3-4 minutes until softened and translucent. This is where the flavors start building—you'll smell that sweet onion aroma filling your kitchen.
Add the 4 minced garlic cloves and stir for 30 seconds until fragrant. Immediately add the 1 tablespoon ground cumin and 1 tablespoon smoked paprika, stirring constantly for 1 minute to toast the spices. This step develops their full flavor—don't skip it! The spices should be sizzling gently, filling your kitchen with that irresistible smoky aroma.
Build the Black Bean Sauce
Stir in the 2 tablespoons tomato paste and cook for 1 minute until it darkens slightly. Pour in the 1 cup vegetable broth and scrape up any browned bits from the bottom of the pan—this adds incredible depth of flavor. Add the drained canned black beans and simmer for 5 minutes until everything is heated through and the sauce has slightly thickened.
Season with the 1 teaspoon salt and 0.5 teaspoon black pepper, then stir in the 2 tablespoons lemon juice. The sauce should be vibrant and slightly tangy—this is the base that will marry perfectly with the fish. Taste and adjust seasoning if needed, remembering that the fish will add its own flavor when combined.
Cook the Fish to Flaky Perfection
While the bean mixture simmers, pat the 1.5 lb white fish fillets dry with paper towels—this ensures a crispy exterior. Season both sides generously with salt and pepper, then carefully place the fish on top of the bean mixture in the skillet. The beans will help keep the fish moist while it cooks.
Cover the skillet and cook for 8-10 minutes, depending on thickness, until the fish is opaque throughout and flakes easily with a fork. The fish should release cleanly from the beans without breaking apart. This gentle poaching method keeps the fish incredibly tender while infusing it with the smoky bean flavors.
Finish and Garnish with Fresh Herbs
Remove the fish from the skillet and transfer it to a serving platter. Spoon the bean mixture over the top, creating a beautiful presentation. The fish should be perfectly centered with the beans cascading around it like a flavorful blanket. This is where the dish comes together visually—make it look as good as it tastes!
Garnish with the chopped fresh cilantro and diced jalapeño pepper, then serve immediately with wedges of lime. The bright green cilantro adds freshness that cuts through the richness of the fish and beans, while the lime wedges let everyone adjust the acidity to their preference. This dish is best served while everything is hot and the fish is still flaky!
Pro Tips For Making Fish And Black Beans
- Sear the Fish First: Hit the fish with a quick, hot sear in oil before adding anything else—just 2-3 minutes per side until golden. I learned this the hard way after serving rubbery fish that fell apart when stirred. The crust locks in flavor and keeps it from disintegrating when the beans and spices join the party.
- Drain and Rinse Beans: Skip the salted canned beans—drain them and give them a quick rinse under cold water. The extra sodium in the liquid makes the fish taste bland, and it cuts the richness that can turn the dish into a soup instead of a flavor-packed one-pan meal.
- Bloom the Cumin: Toast the ground cumin in the same pan you sear the fish—just 30 seconds until it smells nutty and aromatic. I was skeptical until I tried it; now it’s the thing that makes the dish actually taste like it belongs in a Latin kitchen, not just a generic weeknight meal.
- Add Fish Late: Push the fish to one side of the pan after searing, then build the bean sauce in the empty space. The fish will cook through in the residual heat without drying out—no need to babysit it. I used to overcook it by stirring it around, and that’s how you end up with sad, dry fish.
Wine and beer pairings for these flavors
Crisp White Wine
For this dish, I always reach for a dry Riesling or Sauvignon Blanc—their bright acidity and citrus notes mirror the lemon in the recipe.
A German Riesling with its crisp finish cuts through the richness of the fish beautifully, while a New Zealand Sauvignon Blanc adds herbal complexity that pairs perfectly with the cumin and smoked paprika. Serve slightly chilled to enhance the refreshing qualities that balance the smoky flavors. 🍷
Craft Beer Options
A Mexican lager like Modelo Especial or Pacífico is my go-to beer pairing—its clean, slightly malty profile complements the dish without overpowering it. For something more adventurous, try a hoppy pale ale with citrusy notes (like Dogfish Head 60 Minute IPA) to contrast the smoky spices.
The carbonation also helps cleanse your palate between bites of rich fish and beans.
Red Wine Surprise
Don’t dismiss red wine entirely—an off-dry Pinot Noir with subtle fruitiness works surprisingly well. Look for one with 1-2% residual sugar (like Meiomi Pinot Noir) to balance the smoky, spicy elements.
The light body won’t compete with the fish, and the fruitiness enhances the tomato paste in the bean sauce. Serve at 60-62°F for the best experience.
Non-Alcoholic Pairings
For a refreshing non-alcoholic option, try sparkling grapefruit soda (like Jarritos or Jones Soda)—its citrusy bite mirrors the lime in the dish. A ginger beer with a splash of lime juice also works wonders, especially if you like a little heat.
For something more sophisticated, a sparkling water with muddled mint and lime keeps the meal light and refreshing.
Regional Wine Twists
In Caribbean-inspired versions, swap the Riesling for a dry sparkling wine like Prosecco—its effervescence and floral notes complement the tropical vibes. For Cajun-style adaptations, a Zinfandel with its jammy fruitiness stands up to the bold spices.
Always let the wine’s acidity match the dish’s brightness to keep every bite balanced.
Nutrition facts
Frequently asked questions
Can I substitute canned black beans with dried beans?
Yes, but you'll need to soak them first! Use 1 cup dried black beans (about 1/3 cup uncooked) and soak overnight in water with 1 teaspoon salt per quart. Drain and rinse before cooking, then simmer in fresh water with a bay leaf for 1.5-2 hours until tender. Dried beans add more texture but require extra prep time.
What's the best fish to use if I can't find cod or halibut?
Look for other firm white fish like mahi-mahi, snapper, or sea bass. These hold up well to the smoky marinade and won't fall apart. Avoid delicate fish like tilapia or sole—they're too soft for this cooking method. If using mahi-mahi, reduce cooking time by 1-2 minutes as it cooks faster.
How do I prevent the fish from drying out?
Pat the fish very dry before seasoning and cooking—this creates a better crust. Keep the skillet covered while cooking to trap steam, and avoid overcooking. The fish is done when it reaches 145°F internally and flakes easily. For extra moisture, add 2 tablespoons water to the skillet during the last 2 minutes of cooking.
Can I make this dish ahead of time?
The bean mixture reheats beautifully—make it up to 2 days ahead and store in an airtight container. Reheat gently in a saucepan with 1 tablespoon water per cup of beans. For the fish, cook it fresh or store separately for 1 day max (it reheats poorly). Assemble just before serving for the best texture.
What if I don't have smoked paprika?
Use 1 tablespoon regular paprika plus 1/4 teaspoon liquid smoke for a similar effect. For an even deeper flavor, add 1/2 teaspoon chipotle powder (found in Mexican grocery stores). The dish will still taste great—just slightly less smoky. Toast the regular paprika for 30 seconds in the skillet before adding other spices.
