Soups & Stews
This beef balti recipe delivers the fiery, aromatic experience of a Birmingham restaurant straight to your kitchen. The secret lies in marinating the beef overnight with garam masala and yogurt, then searing it to lock in flavors before simmering in a rich tomato base.
Every bite combines tender beef with crispy fried onions and a sauce that’s perfectly balanced—spicy, tangy, and deeply savory.
The process begins with a fragrant spice blend of cumin, coriander, and turmeric, toasted until fragrant, then simmered with tomatoes until reduced to a glossy, concentrated base. The beef cooks low and slow, ensuring it stays fork-tender while absorbing the complex flavors.
This isn’t just a curry—it’s a full sensory experience, where the aroma alone will have everyone gathering around the table.
What makes this recipe stand out is the crispy fried onions, added at the end for a textural contrast that cuts through the richness of the sauce. Serve it with steamed basmati rice and warm naan to soak up every last drop of that fragrant, spiced goodness.
The dish is restaurant-quality, but with the flexibility to adjust the heat to your preference.
For authenticity, let the flavors meld while you prepare the sides—this dish tastes even better the next day as the spices deepen.
Whether you're feeding a crowd or treating yourself to a weeknight indulgence, this beef balti will become your go-to for bold, comforting flavors that feel like a hug in a bowl.
Ingredients for beef balti
Pantry staples plus a few specialty spices—this beef balti brings Birmingham's bold flavors home.
| Ingredient | Amount | Notes |
|---|---|---|
| Beef Chuck Roast 🥩 | 1 ½ lb | Cut into 1-inch cubes |
| Plain Yogurt 🥛 | 1 cup | Full-fat preferred |
| Garam Masala 🌶️ | 2 tbsp | For marinade depth |
| Cumin Seeds 🌿 | 1 tbsp | Toasted until fragrant |
| Ground Coriander 🌿 | 1 tbsp | Freshly ground preferred |
| Ground Turmeric 🧄 | ½ tsp | Bright yellow color |
| Cayenne Pepper 🔥 | ½ tsp | Adjust for heat preference |
| Canned Crushed Tomatoes 🍅 | 14 ½ oz | San Marzano preferred |
| Red Onions 🧅 | 2 whole | Thinly sliced for frying |
| Fresh Ginger 🧄 | 1 tbsp | Finely grated |
| Garlic Cloves 🧄 | 6 cloves | Minced for sauce |
| Vegetable Oil 🫒 | ½ cup | High smoke point |
| Salt 🧂 | 1 ½ tsp | Kosher or sea salt |
| Fresh Cilantro 🌿 | ¼ cup | Chopped for garnish |
The beef is everything here. Chuck roast stays tender while absorbing flavors, but sirloin works too if you're in a hurry. Look for good marbling at Whole Foods or your local butcher—they'll cut it for you. For the garam masala, MDH or Patanjali are my go-tos, but any good brand works. Toast your whole spices (cumin, coriander) in a dry pan until fragrant—this adds depth the pre-ground spices can't match. The yogurt? Full-fat Greek yogurt makes the marinade richer, but regular works too.
No garam masala? Mix 1 tsp each of cumin, coriander, turmeric, and cayenne—it's not identical, but close. Fresh ginger and garlic are ideal, but jarred minced ginger works in a pinch. For the tomatoes, San Marzano in a 28-oz can is perfect, but any good crushed tomato works. The onions? Red onions for sweetness, but yellow works too. If you're avoiding oil, ghee works beautifully for frying the onions crispy. And trust me on the cilantro garnish—it brightens everything up.
Marinate the beef overnight for maximum flavor. The onions keep 2 days in the fridge if prepped ahead. For storage, let the balti cool completely, then refrigerate for up to 4 days. Freezes beautifully for 3 months—just reheat gently to avoid breaking up the onions. I always double the batch because it reheats even better the next day. Serve with steamed basmati rice and warm naan to soak up every last drop of that spiced goodness.
Why You'll Love This Recipe
- One-Pot Magic: I swear by this—just brown the beef, toss in the spices, and let it slow-cook. No chopping, no fussing, and one pot to scrub later. That chuck roast practically melts into tender perfection while you sip tea.
- Flavor Bomb: The garam masala and yogurt marry so well—they’re like the ultimate hug in a bowl. The cumin seeds toast up with a nutty crunch, then soften into warmth, while the coriander adds that earthy, bright finish. Honestly, it’s the kind of dish that makes you want to eat straight from the pan.
- Weeknight Workhorse: This feeds a crowd or fills my lunchbox for days. Double the batch, store it in jars, and reheat—still tastes fresh. (Yes, even on a Tuesday night.) My kids ask for it at school meetings, and my partner’s the one who “accidentally” eats the leftovers first.
- Budget Hero: Beef chuck roast is cheap, and a little goes a long way here. The spices are pantry staples, and the yogurt adds richness without breaking the bank. I’ve made this for date nights, potlucks, and lazy Sundays—always a hit, always affordable.
Step-by-step instructions for beef balti
Here's how to create a restaurant-quality beef balti with perfectly tender beef and crispy onions.
Marinate the Beef for Maximum Flavor
Cut the 1.5 lb beef chuck roast into 1-inch cubes and place them in a large bowl. In a separate small bowl, combine the 1 cup plain yogurt, 2 tbsp garam masala, 1 tbsp ground coriander, 0.5 tsp ground turmeric, 0.5 tsp cayenne pepper, and 1.5 tsp salt. Mix until the spices are fully dissolved in the yogurt.
Pour the spiced yogurt over the beef cubes, ensuring each piece is evenly coated. Cover the bowl with plastic wrap and refrigerate for at least 2 hours, or preferably overnight. This marinade not only tenderizes the beef but also infuses it with deep, aromatic flavors that form the heart of a proper balti.
Toast the Spices and Build the Tomato Base
Heat the 0.5 cup vegetable oil in a large, heavy-bottomed pot over medium heat. Add the 1 tbsp cumin seeds and toast them for 1-2 minutes until they begin to sizzle and release their nutty aroma. Immediately add the 6 minced garlic cloves and 1 tbsp finely grated fresh ginger, cooking for another 30 seconds until fragrant.
Pour in the 14.5 oz canned crushed tomatoes and stir well. Add the marinated beef along with any accumulated marinade, bringing the mixture to a gentle simmer. Cover the pot and cook for 45 minutes, stirring occasionally, until the beef is fork-tender and the sauce has thickened slightly. This slow cooking ensures the beef remains juicy while absorbing all those wonderful spices.
Fry the Onions for Crispy Perfection
While the beef cooks, thinly slice the 2 whole red onions. Heat 2 tablespoons of vegetable oil in a separate skillet over medium heat. Fry the onions in batches, stirring frequently, for 8-10 minutes until they turn golden brown and crispy. They should be sweet and caramelized with just a hint of crunch.
Real talk: Don't rush this step. The onions need time to develop that perfect balance of sweetness and crispness that makes a balti so satisfying. If they start to burn, reduce the heat slightly and give them a little more time. Once done, remove them from the oil and drain on paper towels, keeping them warm until ready to serve.
Finish and Garnish the Balti
After the beef has cooked, uncover the pot and increase the heat to medium-high. Let the sauce reduce for 5-7 minutes until it coats the back of a spoon. This concentrated sauce is what gives balti its rich, velvety texture. Taste and adjust the seasoning if needed—you might want to add a pinch more salt or cayenne to suit your preference.
To serve, divide the beef and sauce among 4 bowls. Top each portion with the crispy fried onions and sprinkle generously with the 0.25 cup chopped fresh cilantro. The contrast between the tender beef, rich tomato sauce, and crispy onions is what makes this dish truly special. Serve immediately with naan or basmati rice to soak up every last drop of that delicious sauce.
Pro Tips For Making Beef Balti
- SEAR THE MEAT FIRST: Beef chuck needs that deep, brown crust before it goes into the yogurt marinade—skip this, and you’ll end up with bland, gray meat. Hit the pan on high heat with 2 tablespoons of oil until the beef releases its juices and develops a caramelized edge (about 3-4 minutes per side). I learned this the hard way after serving a balti where the beef tasted more like stew than spiced perfection.
- WHISK THE YOGURT: Plain yogurt separates when mixed with spices, and nobody wants curdled yogurt in their balti. Whisk it vigorously with a fork or immersion blender until it’s smooth and thick—this keeps the marinade cohesive. Add the garam masala and ground coriander after whisking, so they disperse evenly. (Yes, even if you’re impatient like me.)
- LOW AND SLOW FOR TENDERNESS: Beef chuck is tough if rushed—this isn’t the time to crank the heat. Once the meat hits the sauce, reduce to a simmer (not a boil) and cover the pot. Let it cook for at least 2.5 hours, stirring occasionally, until the beef shreds easily. I was skeptical until I tried it: the result is melt-in-your-mouth texture, not chewy disappointment.
- TOAST THE SPICES SEPARATELY: Garam masala and ground coriander lose their punch if tossed in raw. Dry-toast the cumin seeds in a separate pan for 30 seconds until fragrant, then grind them with the garam masala—this unlocks their aroma. Add the toasted mix to the yogurt marinade or sauce last, so the flavors hit your tongue fresh. (Does it look weird? Yes. Does it work? Every single time.)
Make-ahead tips for beef balti
Marinade Prep Ahead
Prep the beef marinade the night before for maximum flavor infusion. Combine the 1 cup yogurt, 2 tbsp garam masala, and remaining spices in a bowl, then pour over the cubed beef.
Store in an airtight container in the fridge for up to 24 hours—this overnight marinade is non-negotiable for authentic balti depth. I always double the batch because it reheats beautifully for lunch the next day. 🥩
Onion Prep Timeline
Slice the 2 red onions thinly and store them in an airtight container with a paper towel to absorb moisture. They’ll keep in the fridge for 2 days before frying—just remove them 1 hour before cooking to bring to room temperature.
This prevents soggy onions when frying. Pro tip: Use a mandoline slicer for perfectly even slices that fry uniformly. 🧅
Sauce Base Make-Ahead
The tomato base can be prepped 1 day ahead without the beef. Toast the spices, reduce the tomatoes, and store the sauce in an airtight container in the fridge. When ready to cook, simply add the marinated beef and simmer for 30 minutes instead of 45 minutes.
The flavors actually deepen overnight, making this a perfect meal prep strategy for busy weeknights. ✨
Complete Balti Assembly
For a stress-free dinner, assemble the entire balti 2 hours before serving. Cook the beef and sauce as directed, then refrigerate. Reheat gently in a pot with 2 tbsp water over low heat for 10 minutes.
Fry the onions fresh and garnish just before serving—this keeps them crispy. I love making this for Sunday family dinners because it reheats like a dream. 🍽️
Freezer-Friendly Strategy
This balti freezes exceptionally well for up to 3 months. After cooking, let it cool completely, then portion into airtight containers with a layer of plastic wrap directly on the sauce to prevent freezer burn.
Thaw overnight in the fridge, then reheat with 1 tbsp water to restore moisture. The onions should be fried fresh after reheating for optimal texture. Trust me, your freezer will thank you. ❄️
Side Dish Prep
Prep your sides simultaneously to save time. Cook 2 cups basmati rice in advance and keep it warm in a rice cooker or covered pot. Warm the naan in a 350°F oven for 5 minutes to revive its texture.
I often make a batch of garlic naan ahead and freeze it—just reheat in the oven for 3-4 minutes when ready. This ensures everything comes together seamlessly. 💡
Nutrition facts
Frequently asked questions
Can I use chicken instead of beef for this recipe?
Chicken works beautifully—just use 1.5 lb boneless thighs or breasts instead of beef chuck. Cut the chicken into 1-inch pieces and marinate for 1-2 hours (no need for overnight). Cook it for 20-25 minutes instead of 45 minutes—chicken cooks faster but still absorbs the spices wonderfully. The texture will be slightly different but equally delicious.
How spicy should I make my beef balti?
The recipe starts with 0.5 tsp cayenne, which gives a mild heat. For medium spice, add 1 tsp; for fiery, go up to 1.5 tsp. You can always adjust after tasting—balance the heat with a spoonful of yogurt or more tomatoes if needed. Remember, the onions and cilantro will help cool the palate.
What's the secret to getting crispy fried onions?
Slice the onions thinly and evenly—a mandoline works best. Fry them in small batches over medium heat with enough oil to coat the pan. Stir constantly for 8-10 minutes until golden brown. The key is patience—rushing causes burning. Drain on paper towels to remove excess oil before serving.
Why does my balti sauce taste too acidic?
If your sauce tastes too tangy, it's likely from the tomatoes. Balance it by adding 1 tsp sugar or 0.5 tsp garam masala to deepen flavors. For extra richness, stir in 2 tbsp tomato paste or a splash of cream. Simmer for 5 more minutes to let flavors meld—this reduces acidity while concentrating the sauce.
Can I make this recipe in a slow cooker?
Yes! Sear the beef first in a skillet, then transfer everything (including sauce) to a 6-quart slow cooker. Cook on low for 6-7 hours or high for 3-4 hours. Finish by frying the onions separately and adding them at the end. The slow cooker makes the beef extra tender, but you may need to reduce the sauce separately to achieve the same thickness.
