This post may contain affiliate links. Please read my disclosure policy.
This Curried Beef with Creamy Peanut Sauce braises flank steak for 90 minutes until it falls apart, in a sauce of coconut milk, red curry paste, and peanut butter. The peanut butter does all the thickening, so there’s no flour or cornstarch anywhere. Thick, golden, and you’ll want it over everything.
Table of Contents

I love a sauce you can stand a spoon up in, and this one gets there without any thickener at all.
The peanut butter does it. A third of a cup whisked into coconut milk and beef broth, and the whole thing goes glossy and rich and slightly sweet in a way that’s hard to place if you don’t know it’s in there. It isn’t a peanut sauce in the satay sense. It’s a curry that happens to have peanut butter doing structural work.
The other half is the curry paste, and there’s a specific moment in the method where it goes into the skillet for a minute before any liquid arrives. Then it’s 90 minutes of nothing. The pot simmers, the beef goes from firm to fork tender, and the sauce reduces into something thick enough to coat rice properly.
It’s a good one to make on a Sunday and eat all week. Better on day 2, like most braises, and it freezes beautifully.

Not exactly, it borrows from Thai cooking. Red curry paste, coconut milk, fish sauce, and lime are all Thai ingredients. If you’ve had massaman curry, you’ll spot the family resemblance in the peanuts and the richness.
But it’s not a massaman and it isn’t traditional anything. There’s curry powder in here alongside the paste, which is more of an Anglo Indian move than a Thai one, and the whole thing is built as a long braise rather than a quicker Thai style curry.
So it’s a curry that grew out of a lot of good ideas from different places, and it works.

- Flank steak (2 pounds, cut into strips against the grain): Lean, and full of the connective tissue that turns silky over a long braise. Cut across the grain before cooking, not after. Chuck roast is the easiest substitute and it’s even more forgiving.
- Salt (2 teaspoons) and black pepper (½ teaspoon): Season the beef before it hits the pan. Two teaspoons across 2 pounds sounds like a lot until you remember it’s the only salt going directly onto the meat.
- Vegetable oil (3 tablespoons): Neutral with a high smoke point, because this pan gets really hot for the sear.
- Onion (1 large, diced): Softens into the base of the sauce and adds a background sweetness you’d miss if it weren’t there.
- Garlic (5 cloves, minced) and fresh ginger (1 tablespoon, grated): Fresh ginger only. The powdered stuff is a completely different ingredient and it won’t give you that warm bright bite. Grate it on a microplane and don’t bother peeling it.
- Red curry paste (3 tablespoons): The backbone of the whole thing. Thai Kitchen and Mae Ploy are the two you’ll find most easily, and Mae Ploy is considerably hotter, so if that’s what you’ve got, start with 2 tablespoons and work up. It lives in the Asian aisle and an open jar keeps for months in the fridge.
- Curry powder (1 tablespoon): Different from the paste. Curry powder brings turmeric and cumin and coriander, warm and earthy, where the paste brings chilies, lemongrass, and galangal. Together they give you more going on than either would alone.
- Full fat coconut milk (14 ounce can): Full fat, and this really matters. Light coconut milk doesn’t have the fat to make a rich sauce and it’s much more likely to split over a long simmer. Shake the can before you open it, because it separates on the shelf.
- Beef broth (2 cups, low sodium): Low sodium, because this reduces for 90 minutes and there’s soy sauce and fish sauce going in on top. Regular broth concentrates into something you can’t fix.
- Creamy peanut butter (⅓ cup): The thickener and a big part of the flavor. Smooth, not chunky, since you want it to melt into the sauce rather than sit in it. A natural peanut butter with nothing but peanuts and salt works beautifully and gives you a cleaner flavor than the sweetened kind.
- Soy sauce (2 tablespoons, low sodium) and fish sauce (1 tablespoon): Two different kinds of savory. Soy brings salt and depth, fish sauce brings a funky umami that vanishes into the sauce and makes everything taste like more. If fish sauce isn’t your thing, use an extra tablespoon of soy, though you’ll notice the difference.
- Brown sugar (1 tablespoon): Balances the salt and the heat. Curry, soy, and fish sauce together get sharp fast without a little sweetness underneath.
- Lime juice (2 tablespoons): Goes in at the very end, off the heat. This is the ingredient that lifts the whole thing and stops it feeling heavy. Fresh, not bottled, and don’t add it early because the brightness cooks away.
- Jasmine rice (3 cups cooked), roasted peanuts (⅓ cup chopped), green onions (3 sliced), cilantro (¼ cup chopped): The rice is a delivery system for the sauce, so make plenty. The peanuts, green onions, and cilantro aren’t garnish, they’re texture and freshness against something rich and soft, and the dish is noticeably better with all three.

Dry the beef and season it. Pat the strips properly dry with paper towels first, because wet beef steams instead of browning and you’ll be standing at the stove wondering why nothing’s happening. Then salt and pepper all over.
Sear it in batches. Oil into a large Dutch oven over medium high, and brown the strips for 2 to 3 minutes. Batches, not all at once. A crowded pot drops the temperature and the beef gives up its moisture instead of taking on color, and that color is flavor you can’t add back later. Onto a plate as it comes out.

Soften the onion. Heat down to medium, onion into the same pot, 3 to 4 minutes until it softens. Scrape the bottom as you go and it’ll lift all the browned bits the beef left behind, which is the best flavor in the recipe and it’s currently glued to your pan. Then the garlic and ginger for a minute more.

Now bloom the paste. Red curry paste and curry powder straight into the oil, stirring, for a full minute until it darkens slightly and the kitchen suddenly smells like a completely different room. Don’t skip this or shorten it, and there’s a whole section below on why.

Build the sauce. Coconut milk and beef broth in, then whisk in the peanut butter, soy sauce, fish sauce, and brown sugar until it’s smooth. The peanut butter takes a moment to break up, so keep whisking until you can’t see any of it.

Beef back in, lid on, heat to low. Bring it to a gentle simmer first, then drop it right down. Gentle is the word. A hard boil will split the coconut milk and you’ll get a slightly grainy sauce with oil pooling on top.
Now leave it alone for 75 to 90 minutes, stirring now and then. If it thickens more than you want, add a splash of broth. It’s ready when the beef gives way completely and you can pull a strip apart with a fork with no resistance at all. If it’s still fighting you at an hour, it isn’t done. Lid back on.

Lime at the end, off the heat. Stir it in, then taste. Ninety minutes of reducing changes everything, so this is the moment to adjust. More lime if it needs brightening, more sugar if it’s gone sharp, more salt if it’s flat.
Serve over warm jasmine rice with plenty of sauce, then peanuts, green onions, and cilantro scattered over the top. Be generous with all three.
This is 60 seconds and it’s the difference between a curry that tastes deep and one that tastes like it came out of a jar.
Curry paste is full of ingredients whose flavor lives in fat, not water. Chilies, lemongrass, galangal, coriander seed. Those compounds are fat soluble, which means they only really release when the paste hits hot oil. Stir it straight into coconut milk and broth and a lot of that flavor stays locked up and never gets into your sauce.
So the paste goes in on its own, into the oil the onions have been cooking in, and you stir it for a minute. You’ll see it darken and you’ll definitely smell it happen. That’s the moment it’s working.
The same applies to the curry powder, which is why both go in together at that stage rather than later.
Watch it though. A minute is right. Two and the paste starts to catch and go bitter, and there’s no coming back from bitter in a sauce this rich.

- Dry the beef before searing. Ten seconds with a paper towel decides whether you get a crust.
- Sear in batches. Crowding the pot steams the meat and you lose the browning that flavors the whole sauce.
- Cut against the grain. Flank has very obvious grain, so look before you slice.
- Bloom the paste for a full minute. Not 20 seconds. The flavor is fat soluble and it needs the oil.
- Gentle simmer, never a boil. Hard boiling splits coconut milk and the sauce goes grainy.
- If the beef is tough, it needs longer. Flank tightens up before it turns tender. That’s the stage people give up at.
- Lime goes in off the heat. Its brightness cooks away, so it’s the last thing that happens.
- Taste at the end. After 90 minutes of reducing it’ll want something. Usually lime, sometimes sugar.
- Spicier. Mae Ploy curry paste instead of Thai Kitchen, or a sliced red chili in with the onion, or a spoonful of sambal oelek at the end.
- With vegetables. Chunks of sweet potato added at the halfway point, or red bell pepper in the last 20 minutes, or a few handfuls of spinach stirred through right at the end.
- Chicken instead. Thighs work well and need far less time, about 30 to 35 minutes. Don’t use breast here, since it’ll be dry long before the sauce is ready.
- Slow cooker. Sear the beef and bloom the paste on the stove first, because a slow cooker can’t do either. Then everything into the crock on low for 6 to 7 hours. Lime at the end as usual.
- Nut free. Swap the peanut butter for sunflower seed butter and skip the peanuts on top. The sauce will be slightly less sweet and every bit as thick.
- Over noodles. Rice noodles instead of rice, which turns it into something closer to a curry noodle bowl and is very good.

Jasmine rice, and make more than you think you need. There’s a lot of very good sauce here and it needs somewhere to go.
Beyond that, everything on the plate should be sharp and crunchy, because the curry is rich and soft and it wants a contrast. My Thai Cucumber Salad is what I make with this most often, since it’s already got the lime, peanuts, and cilantro going on and it takes about 10 minutes.
A simple slaw with lime in the dressing works too, or steamed greens with a splash of soy.
Lime wedges on the table so people can add more, and I strongly recommend the peanuts and cilantro at the end.
Make ahead: this is genuinely better on day 2. The flavors settle and the sauce thickens further. Making it a day early is an upgrade, not a compromise.
Fridge: 4 days in an airtight container. The sauce will set quite thick when cold and loosens right back up with heat.
Freezer: 3 months, and it freezes well. Coconut milk can look slightly separated on thawing, which sounds alarming and isn’t. Reheat it gently, stir, and it comes back together. Portion it before freezing rather than one large block.
Reheating: low on the stove with a splash of broth or water to loosen it. Go gently, since high heat can split the sauce. Rice is better made fresh.

Before You Begin! If you make this, please leave a review and rating letting us know how you liked this recipe! This helps our business thrive & continue providing free recipes.
This Curried Beef with Creamy Peanut Sauce braises flank steak for 90 minutes in coconut milk, red curry paste, and peanut butter until it’s fork tender and the sauce is thick enough to coat rice. Serve it over jasmine rice with peanuts and cilantro. Feeds 6 and it’s even better the next day.
- 2 pounds flank steak (cut into strips against the grain)
- 2 teaspoons salt
- ½ teaspoon black pepper
- 3 tablespoons vegetable oil
- 1 large onion (diced)
- 5 cloves garlic (minced)
- 1 tablespoon fresh ginger (grated)
- 3 tablespoons red curry paste
- 1 tablespoon curry powder
- 14 ounces full fat coconut milk (1 can)
- 2 cups beef broth (low sodium)
- ⅓ cup creamy peanut butter
- 2 tablespoons soy sauce (low sodium)
- 1 tablespoon fish sauce
- 1 tablespoon brown sugar
- 2 tablespoons lime juice
For serving
- 3 cups cooked jasmine rice (warm)
- ⅓ cup roasted peanuts (chopped)
- 3 green onions (sliced)
- ¼ cup fresh cilantro (chopped)
Before You Begin! If you make this, please leave a review and rating letting us know how you liked this recipe! This helps our business thrive & continue providing free recipes.
-
Pat the 2 pounds flank steak strips dry and season with the 2 teaspoons salt and ½ teaspoon black pepper. Heat the 3 tablespoons vegetable oil in a large heavy pot or Dutch oven over medium high heat. Sear the beef strips in batches for 2 to 3 minutes, until browned on the outside. Do not crowd the pot, since that steams the meat instead of searing it. Transfer the beef to a plate.

-
Lower the heat to medium and add the diced onion to the same pot. Cook for 3 to 4 minutes, until softened, scraping up the browned bits. Stir in the 5 cloves minced garlic and 1 tablespoon grated ginger and cook for 1 minute more.

-
Stir in the 3 tablespoons red curry paste and 1 tablespoon curry powder and cook for 1 minute, until fragrant and the paste darkens slightly. Blooming the paste in the oil is what wakes up all that flavor.

-
Pour in the coconut milk and 2 cups beef broth, then whisk in the ⅓ cup peanut butter, 2 tablespoons soy sauce, 1 tablespoon fish sauce, and 1 tablespoon brown sugar until smooth.

-
Return the beef and any juices to the pot. Bring to a gentle simmer, then reduce the heat to low, cover, and simmer for 1 hour 15 minutes to 1 hour 30 minutes, stirring occasionally, until the beef is fork tender. If the sauce gets too thick, loosen it with a splash of broth.

-
Stir in the 2 tablespoons lime juice. Taste and adjust the salt, lime, or sugar as needed.

-
Serve over the 3 cups warm jasmine rice, topped with the ⅓ cup chopped peanuts, sliced green onions, and ¼ cup cilantro.
- Cut against the grain. Flank has very obvious grain. Slice across it, not with it, before cooking.
- Sear in batches. Crowding the pot steams the beef and you lose the browning that flavors the whole sauce.
- Bloom the paste for a full minute. The flavor in curry paste is fat soluble, so it needs the hot oil to release properly. Watch it though, because 2 minutes and it turns bitter.
- Full fat coconut milk only. Light coconut milk doesn’t have the fat for a rich sauce and splits much more easily.
- Gentle simmer, never a boil. Boiling splits the coconut milk and the sauce goes grainy.
- Tough beef needs longer. Flank tightens before it turns tender. If it’s chewy at an hour, give it another 20 to 30 minutes.
- Lime goes in off the heat, at the very end. Its brightness cooks away if it goes in early.
- Curry paste heat varies. Thai Kitchen is mild, Mae Ploy is much hotter. Start with 2 tablespoons of Mae Ploy and work up.
Serving: 1servingCalories: 680kcal (34%)Carbohydrates: 37g (12%)Protein: 44g (88%)Fat: 41g (63%)Saturated Fat: 19g (119%)Polyunsaturated Fat: 8gMonounsaturated Fat: 11gTrans Fat: 0.05gCholesterol: 91mg (30%)Sodium: 1540mg (67%)Potassium: 1118mg (32%)Fiber: 3g (13%)Sugar: 6g (7%)Vitamin A: 1300IU (26%)Vitamin C: 7mg (8%)Calcium: 104mg (10%)Iron: 6mg (33%)
Notice: Nutrition is auto-calculated for your convenience. Where relevant, we recommend using your own nutrition calculations.
Why is my beef still tough?
Can I use a different cut of beef?
What’s the difference between red curry paste and curry powder?
Why did my sauce go grainy?
Do I have to use fish sauce?
How spicy is it?
Can I make it ahead or freeze it?





