Breakfast & Brunch
This bean shakshuka recipe transforms a simple breakfast into a vibrant, hearty dish that’s as satisfying as it is elegant. The secret lies in the rich, spiced tomato-bean sauce that pools around perfectly poached eggs—each bite delivers a balance of smoky paprika, bright peppers, and tender beans.
I developed this version to bring restaurant-quality flavors to your morning table without the fuss of complicated techniques.
The beauty of shakshuka is its versatility: it’s a complete meal in one pan, packed with protein from the beans and eggs while keeping prep simple. Sautéed onions, garlic, and bell peppers form the aromatic base, while canned tomatoes and white beans create a thick, flavorful sauce.
The eggs poach directly in the sauce, absorbing its rich spices and creating that signature runny yolk that makes it irresistible.
What you’ll end up with is a dish that’s visually stunning—a golden, bubbling sauce dotted with creamy eggs—and deeply flavorful, with layers of warmth from cumin and chili flakes. The texture is perfect: tender beans, silky sauce, and a soft-boiled egg that cuts through everything.
It’s the kind of breakfast that feels like a celebration, even on a weekday.
Serve with crusty bread to soak up the sauce or a dollop of yogurt for cooling contrast. This recipe is designed to impress without stress, making it ideal for brunch gatherings or a special weekend morning when you want to cook something memorable. Let’s get started!
Ingredients for bean shakshuka
Four eggs, a can of tomatoes, and a handful of spices transform into a restaurant-worthy breakfast.
| Ingredient | Amount | Notes |
|---|---|---|
| Extra-Virgin Olive Oil 🫒 | 2 tbsp | High quality, fruity |
| Yellow Onion 🧅 | 1 whole | Diced into small pieces |
| Red Bell Pepper 🍅 | 1 whole | Diced, any color |
| Garlic Cloves 🧄 | 4 cloves | Minced, fresh preferred |
| Canned Diced Tomatoes 🍅 | 1 can | 28 oz, San Marzano if possible |
| Canned White Beans 🌾 | 1 can | 15 oz, drained and rinsed |
| Smoked Paprika 🌶️ | 1 tbsp | Sweet or hot variety |
| Ground Cumin 🌿 | 1 tsp | Toasted for deeper flavor |
| Chili Flakes 🔥 | ½ tsp | Adjust for heat preference |
| Salt 🧂 | 1 tsp | Diamond Crystal preferred |
| Black Pepper 🌶️ | ½ tsp | Freshly ground preferred |
| Large Eggs 🥚 | 4 whole | Room temperature for even cooking |
| Plain Yogurt 🥛 | ¼ cup | For serving, full-fat preferred |
| Crusty Bread 🍞 | 1 loaf | For serving, optional |
The tomatoes and beans are the heart of this dish. San Marzano canned tomatoes have the best flavor—sweeter and less acidic—but any quality brand works. For the beans, cannellini or great northern are ideal, but white beans from a can are fine too. Look for no salt added varieties to control the seasoning. The red bell pepper adds sweetness and color, but any bell pepper color works. If you're feeling fancy, roast the pepper first for deeper flavor, but sautéing is plenty delicious. I always grab extra paprika—it's the star here, giving that signature smoky flavor.
No smoked paprika? Regular paprika plus a pinch of liquid smoke gets you close. Short on bell pepper? Zucchini or mushrooms work in a pinch—they add texture without changing the flavor profile much. The yogurt is optional but adds a nice cooling contrast. If you're vegan, coconut yogurt or vegan sour cream works perfectly. For the eggs, room temperature is key—they'll cook more evenly. If you're making this ahead, keep the eggs separate until you're ready to poach them. The sauce reheats beautifully, but the eggs should go in fresh for that perfect runny yolk.
This sauce reheats beautifully—honestly tastes better the next day once everything melds. Keeps for 4-5 days in the fridge, and freezes for 3 months. I portion the sauce into containers and add the eggs fresh when reheating for quick weeknight breakfasts. The bread? Toast it fresh and serve on the side—it soaks up all that delicious sauce. For leftovers, store the eggs separately and reheat the sauce first, then add the eggs at the end to keep them creamy.
Why You'll Love This Recipe
- One-Pan Magic: I swear by this—just toss everything into one skillet, let the onions caramelize in that golden olive oil, and boom. No extra dishes, no stress. The bell pepper adds a sweet crunch that balances the smoky tomatoes, and the beans soak up all the flavor like sponges. My lazy Sundays thank me every time.
- Garlic-Goat Cheese Bliss: Honestly, the garlic here isn’t just background noise—it’s the star. Sautéed until fragrant, then simmered with the tomatoes until it’s almost jammy, with just a hint of bite. Top it with crumbled goat cheese (or feta, if you’re feeling bold), and you’ve got that perfect salty-sweet contrast that makes you want to lick the plate. (Yes, even on a Tuesday night.)
- Meal-Prep MVP: This keeps amazingly in the fridge for days—better, even, the next day because the flavors meld. I make a big batch on Sundays, pack it in jars for lunches, and reheat it with a splash of water. The tomatoes thicken just enough to coat the beans, and the whole thing stays hearty. My office coworkers call it “the secret sauce.”
- Pocketbook Hero: Between us, this recipe is ridiculously budget-friendly. Canned tomatoes, onions, and beans? Check. Olive oil? A little goes a long way. I’ve fed four people for under $10 with this, and they’ve never complained. Plus, it’s one of those dishes where the cheaper the ingredients, the more you taste their true flavor—no fancy tricks needed.
Step-by-step instructions for bean shakshuka
Here's how to make this hearty, flavorful dish with tender beans and perfectly poached eggs.
Sauté the Vegetables for Flavor Foundation
Heat the 2 tablespoons extra-virgin olive oil in a large, deep skillet over medium heat. Add the diced yellow onion and cook for 5 minutes until softened and translucent. You'll see the edges start to turn golden—that's your cue to add the diced red bell pepper. Cook for another 4-5 minutes until the peppers have released their moisture and begin to caramelize slightly.
Stir in the 4 minced garlic cloves and cook for 30 seconds until fragrant. Here's the thing—don't let the garlic burn. It should smell amazing but not bitter. If you notice it darkening too quickly, reduce the heat slightly. This aromatic base is the soul of your shakshuka, so take your time here.
Build the Spiced Tomato-Bean Sauce
Add the 1 can diced tomatoes, 1 can drained white beans, 1 tablespoon smoked paprika, 1 teaspoon ground cumin, ½ teaspoon chili flakes, 1 teaspoon salt, and ½ teaspoon black pepper to the skillet. Stir everything together and bring to a gentle simmer over medium-low heat. Let it cook uncovered for 10-12 minutes, stirring occasionally, until the sauce thickens slightly and the flavors meld together.
You'll know it's ready when the sauce coats the back of a spoon and the beans are heated through. The sauce should be rich and slightly chunky from the tomatoes and beans. If it looks too thick, add 2-3 tablespoons of water to loosen it to your preferred consistency. This is where the magic happens—the spices should be noticeable but not overpowering.
Create Wells for the Poached Eggs
Using a spoon, gently press down on the sauce to create 4 small wells, about 1 inch in diameter each. Crack the 4 large eggs directly into these wells, being careful not to break the yolks. The eggs should sit nestled in the sauce, ready to poach perfectly.
Cover the skillet and let the eggs cook for 5-6 minutes over low heat. You're aiming for runny yolks and set whites—this is the classic shakshuka style. Check the eggs after 4 minutes to see if they're set to your liking. If you prefer firmer yolks, cook for another 1-2 minutes. The sauce should be gently bubbling around the eggs, creating that beautiful poached effect.
Finish and Serve
Once the eggs are perfectly poached, remove the skillet from heat. Let the shakshuka rest for 2-3 minutes to allow the eggs to finish setting slightly. This resting period also lets the flavors settle and the sauce absorb any remaining moisture from the eggs.
To serve, spoon the shakshuka into bowls, ensuring each serving has an egg nestled in the sauce. Drizzle with the ¼ cup plain yogurt and serve immediately with slices of crusty bread on the side. The yogurt adds a cool, creamy contrast to the warm, spiced sauce. Each bite should deliver a perfect balance of tender beans, rich tomato sauce, and velvety eggs.
Pro Tips For Making Bean Shakshuka
- Cook Onions Low First: I learned this the hard way—sautéing onions at high heat turns them bitter before they even soften. Start with medium-low and only bump up the heat once they’re translucent, or you’ll end up with a dish that tastes like regret.
- Dice Bell Pepper Small: Big chunks of bell pepper won’t break down, no matter how long you cook them. Cut them into ¼-inch pieces so they melt into the sauce instead of sitting there like stubborn guests at a party.
- Simmer Tomatoes Uncovered: Let the tomatoes reduce naturally—their skin will tighten, making it easier to skim off any foam or excess liquid. Covering too soon traps steam and keeps the sauce watery, which defeats the whole point of shakshuka.
- Toast Garlic Slowly: Burnt garlic ruins everything. Add the minced cloves when the onions are already soft, then cook them on the lowest heat possible until just golden—about 2-3 minutes. Patience here means no bitter aftertaste.
Creative variations of these flavors
Moroccan-Inspired
Transform your shakshuka into a tagine-inspired dish by adding 1 teaspoon ground coriander and ½ teaspoon ground cinnamon to the spice blend. Swap the white beans for chickpeas and stir in ½ cup raisins during the simmering phase.
Top with toasted almonds and a sprinkle of fresh cilantro for a sweet-savory twist that feels like a North African feast. 🌿
Spicy Chipotle Twist
For a smoky, smoldering variation, replace the smoked paprika with 1 tablespoon chipotle powder and add ½ teaspoon ground cumin for depth. Stir in 1 minced chipotle pepper in adobo sauce with the tomatoes.
The heat will build gradually—perfect for those who love bold, smoky flavors. Serve with avocado slices and lime wedges to balance the heat. 🔥
Mediterranean Herb Version
Brighten your shakshuka with a Mediterranean flair by adding 1 teaspoon dried oregano and 1 teaspoon dried thyme to the spice mix. Swap the red bell pepper for zucchini and cherry tomatoes, and stir in ½ cup chopped kalamata olives at the end.
Finish with fresh basil and parsley for a fresh, herbaceous profile that’s perfect for summer. 🌞
Breakfast-for-Dinner Upgrade
Turn this into a hearty dinner by adding ½ cup cooked quinoa or couscous to the sauce while simmering. Stir in ½ cup crumbled feta cheese at the end for extra richness.
Serve with a side of roasted eggplant and garlic naan for a full meal that’s still easy to prepare. The quinoa adds protein and texture, making it feel like a complete dinner. 🍽️
Sweet Potato Adaptation
For a fall-inspired version, swap half the white beans for ½ cup diced roasted sweet potatoes. Add ½ teaspoon ground ginger and ½ teaspoon turmeric to the spice blend for warmth.
The sweet potatoes add natural sweetness that pairs beautifully with the smoky paprika. Top with toasted pecans for crunch and a sprinkle of fresh mint for freshness. 🍠
Vegan Egg Substitute
Skip the eggs entirely and use 4 vegan egg substitutes (like tofu or chickpea flour "eggs") for a fully plant-based version. Simmer the sauce for 5 extra minutes to thicken, then add the egg substitutes and cook until set.
Garnish with vegan yogurt and toasted pumpkin seeds for a protein-packed, egg-free meal. This version is just as satisfying and perfect for vegans or anyone avoiding eggs. 🌱
Nutrition facts
Frequently asked questions
Can I make bean shakshuka without eggs?
For a fully vegetarian version, swap the eggs for 4 firm tofu cubes (pressed and cut into egg shapes) or chickpea flour "eggs". Cook them in the sauce for 6-8 minutes until set. Garnish with vegan yogurt and toasted pumpkin seeds for extra protein.
How do I prevent the sauce from getting too watery?
Simmer the sauce uncovered for 10-12 minutes to reduce excess liquid. If it's still too thin, stir in 1 tablespoon cornstarch mixed with 1 tablespoon water and cook for 2 more minutes. The beans release moisture, so draining them well before adding helps too.
What's the best way to reheat leftovers?
Reheat the sauce only (without eggs) in a skillet over low heat for 3-4 minutes. Add fresh eggs to poach in the reheated sauce for 5 minutes to keep them creamy. The sauce reheats beautifully—it actually tastes better the next day as flavors meld! Store eggs separately in the fridge.
Can I use fresh beans instead of canned?
Yes, but they need 20-25 minutes of simmering to soften. Use 1.5 cups dried white beans (soaked overnight) or 2 cups fresh green beans (trimmed). Fresh beans add a lighter texture but require more cooking time. For speed, use canned beans—they're pre-cooked and ready to go.
Why did my eggs turn out too firm?
Overcooking happens when heat is too high or cooking time exceeds 6 minutes. For perfect runny yolks, use low heat and cover the pan. Start checking at 4 minutes—eggs finish cooking slightly after removing from heat. Room-temperature eggs also poach more evenly.
