Tender cod braised over saffron-stained butter beans with smoked paprika and lemon — a one-pot weeknight dinner ready in 50 minutes.
Cod poached directly in a seasoned broth is one of the most reliably good weeknight moves — the fish absorbs everything in the pan while staying impossibly tender, and the beans turn creamy from the liquid they soak up. The technique here is a quick stovetop braise: you build a deeply savory base with smoked paprika, saffron, and canned butter beans, then nestle the fish in and let it finish gently, so it never toughs up or dries out.
Expect a broth that's rich and slightly smoky with a floral undertone from the saffron, beans that are silky and almost stew-like, and fish that flakes at the press of a fork. This works as a fast weeknight dinner with crusty bread, and it scales cleanly for four people from a single wide skillet. If the broth tastes flat after reducing, add a squeeze of lemon before the fish goes in — acid at that stage makes an immediate difference.
🛒 Links may earn us a small commission at no cost to you.
🛒 We may earn a small commission at no extra cost to you. We only recommend gear we'd use ourselves.
A dry, unoaked white wine with good acidity is the right call here. Albariño from Rías Baixas has a saline minerality and stone fruit note that mirrors the saffron without competing with the paprika — grab a bottle of Martín Códax if you want a reliable, widely available option. If you prefer something broader, a white Burgundy or unoaked Chardonnay works too, but avoid anything heavily oaked, which will clash with the lemon.
For non-alcoholic pairings, sparkling water with a wedge of lemon and a few drops of orange bitters keeps the palate clean between bites. A dry ginger lemonade — just fresh lemon juice, a touch of ginger syrup, and soda — echoes the citrus in the broth without sweetening the meal.
Crusty bread is near-mandatory. A bakery sourdough or a baguette handles the saffron-stained broth better than anything else — you want something with a firm crust that won't collapse when dragged through the pan. If you want a vegetable side, keep it simple: a lightly dressed arugula salad with shaved Parmesan and a lemon vinaigrette adds bitterness that cuts the richness of the beans without needing another pot on the stove.
For a heartier spread, serve alongside a small plate of marinated olives and roasted cherry tomatoes. The acidity of the tomatoes reinforces the lemon in the braise and gives the table something to pick at while the fish finishes cooking.
For a dairy-free version, swap the 2 tablespoons of butter for an equal amount of good-quality extra-virgin olive oil added off-heat at the end. You lose a little richness, but the saffron and smoked paprika carry the dish. If you want more body without butter, stir in a tablespoon of tahini — it adds a nutty creaminess that complements the beans without reading as Middle Eastern in a distracting way.
Halibut or hake work in place of cod and behave almost identically in the braise. Hake is usually cheaper and flakes just as cleanly. Avoid thin tilapia fillets — they overcook before the beans heat through. If you want to make this with shrimp instead, use 1 pound of large (16/20 count) peeled shrimp, add them in the final 4 minutes, and pull the pan the second they turn opaque and curl.
To make this vegetarian, double the butter beans (use two 15-ounce cans total) and add 8 ounces of halved cherry tomatoes with the broth. Increase the braise time to 15 minutes before serving — the tomatoes break down and add body. Finish with a fried egg on top of each bowl if you want protein.
For a spicier profile, add 1/2 teaspoon of crushed Aleppo pepper along with the smoked paprika, or stir in 1 tablespoon of harissa paste with the tomato paste. Either option adds heat that builds slowly rather than hitting upfront.
Yes, but thaw them completely in the refrigerator overnight before cooking — never add frozen fish directly to the braise or the temperature will drop too sharply and the fish will steam unevenly. Pat the fillets very dry with paper towels before seasoning, since frozen fish releases more surface moisture than fresh.
The bean base can be made up to 2 days ahead and refrigerated — it actually improves as the saffron and paprika steep. Reheat it gently over medium-low, then add the raw fish and proceed from there. Don't try to reheat fully assembled leftovers with fish in them; the fish will overcook and turn rubbery.
Store the beans and fish separately if possible — the fish continues to firm up in the broth overnight. Refrigerate in airtight containers for up to 2 days. When reheating the fish, do it gently in a covered pan over low heat with a splash of water or broth, just until warmed through, about 3–4 minutes.
Freeze the bean base only, not the cooked fish — fish proteins break down poorly in the freezer and become watery and mealy after thawing. Freeze the bean base in a sealed container for up to 2 months, thaw overnight in the fridge, reheat, and cook fresh fish directly in it.
Saffron is doing real work here — it colors the broth and adds a floral depth that smoked paprika alone can't replicate. If you don't have it, add an extra pinch of turmeric (1/4 teaspoon) for color and a small pinch of dried thyme for complexity. It won't be identical, but it won't be flat either.
Remove the fish to a plate and increase the heat to medium-high, letting the broth simmer uncovered for 3–5 minutes until it reduces to your liking. Return the fish to warm through for 1 minute before serving. Alternatively, mash roughly 1/4 cup of the beans against the side of the pan with a spoon — it thickens the broth naturally without any starch.
Yes, but soak 1 cup of dried beans overnight, then simmer them separately until just tender (not fully cooked) before adding to the braise — about 45–55 minutes depending on age of the beans. Fully pre-cooked dried beans will fall apart during the braise. Canned is genuinely the better practical choice for a weeknight.
Yes, but use a 5-quart wide Dutch oven rather than a skillet so the fish can lie flat in a single layer — crowding the fillets causes them to steam rather than braise and they'll cook unevenly. Increase the broth by 1/2 cup and add 3–4 additional minutes of covered cook time for the fish.
Very fresh cod holds together better than fish that's a few days old — check that the fillet is opaque all the way through and then use a wide, flexible fish spatula to transfer it. If it breaks, it's still fully edible; just spoon the fish over the beans and call it rustic. Presentation aside, it tastes exactly the same.
Absolutely. Add 1 cup of thinly sliced fennel with the onion and cook it down the same way — it softens and turns sweet and works naturally with the saffron. Baby spinach can be stirred in right after the fish is done; 2 packed cups will wilt in about 60 seconds from the residual heat. Roasted red peppers (2 tablespoons, roughly chopped) added with the tomato paste also work well.
Daily Home Cookery is self-funded. If something you cooked here made dinner a little better, a coffee keeps the kitchen running.
☕ Buy me a coffee
Silky Korean glass noodles tossed with sesame-soy beef, shiitake mushrooms, and spinach. A weeknight-friendly japchae recipe with step-by-step technique.
A hearty one-pan dinner of Italian sausage, cannellini beans, and wilted greens with a garlicky tomato broth. Done in 45 minutes.
One-skillet smoked sausage and orzo with blistered cherry tomatoes and spinach — ready in 35 minutes, minimal cleanup.