Main Courses
This authentic Thai beef and broccoli recipe delivers the perfect balance of silky beef, crisp-tender broccoli, and a sauce bursting with umami, sweetness, and a touch of heat.
The key lies in marinating the beef in a fragrant blend of garlic, ginger, and fish sauce—traditional techniques that transform tough cuts into tender, flavorful bites. I’ve refined this recipe over years of testing, ensuring every element comes together in harmony without sacrificing authenticity.
The sauce is where the magic happens: a rich combination of oyster sauce, soy sauce, and a hint of palm sugar creates depth, while fresh chili and lime add brightness.
Unlike many Westernized versions, this recipe skips heavy cream, relying instead on coconut milk for a velvety texture that’s both authentic and approachable. The broccoli gets just enough time in the wok to stay crisp, so it contrasts beautifully with the tender beef.
What you’ll end up with is a dish that’s restaurant-quality but simple enough for weeknight cooking—golden-brown beef strips, vibrant green broccoli florets, and a glossy sauce that clings perfectly.
The aroma alone will have everyone gathering at the table, and the first bite delivers that perfect Thai flavor profile: sweet, salty, umami-rich, and just a little spicy. This is the kind of meal that feels special without requiring hours in the kitchen.
Serve it over steamed jasmine rice to soak up every last bit of that silky sauce, or pair it with a side of garlic noodles for a full Thai-inspired feast.
The best part? Leftovers reheat beautifully, making it ideal for meal prep. Let’s get cooking—this dish is worth every minute of effort.
Ingredients for authentic thai beef and broccoli
Silky beef, crisp broccoli, and a sauce packed with umami—just these ingredients transform your weeknight into Thai restaurant magic.
| Ingredient | Amount | Notes |
|---|---|---|
| Flank Steak 🥩 | 1 ½ lb | Thinly sliced against grain |
| Broccoli Florets 🥦 | 1 ½ lb | Large florets, stems trimmed |
| Garlic Cloves 🧄 | 8 cloves | Minced, fresh preferred |
| Fresh Ginger 🌿 | 2 tbsp | Grated, peeled |
| Fish Sauce 🍶 | 2 tbsp | Red Boat preferred |
| Oyster Sauce 🥫 | 3 tbsp | High-quality, no additives |
| Soy Sauce 🥫 | 2 tbsp | Light or all-purpose |
| Palm Sugar 🍯 | 2 tbsp | Or substitute brown sugar |
| Coconut Milk 🥥 | ¼ cup | Full-fat, canned |
| Fresh Thai Chili 🌶️ | 1 whole | Seeds removed for mild heat |
| Lime Juice 🍋 | 2 tbsp | Freshly squeezed |
| Neutral Oil 🫒 | 2 tbsp | Vegetable or peanut oil |
| Salt 🧂 | 1 tsp | Kosher or sea salt |
| Jasmine Rice 🍚 | 1 ½ cups | Uncooked, for serving |
| Green Onions 🧅 | 3 whole | Sliced, for garnish |
The beef is everything here. Flank steak is my go-to—it’s lean but tender when sliced thin against the grain. Ask your butcher to slice it if you can’t do it yourself, or freeze it 30 minutes for easier slicing. For the marinade, Red Boat fish sauce is worth the splurge—it’s clean, salty, and full of authentic flavor. If you can’t find it, Thai Kitchen brand works in a pinch. The ginger and garlic? Fresh only. Dried just won’t cut it—this isn’t the time for shortcuts. Trader Joe’s or Asian markets usually have great fresh ginger with vibrant color, which means it’s potent.
No fish sauce? Soy sauce plus a splash of Worcestershire gets you close, though it’ll lack that deep umami punch. Palm sugar hard to find? Brown sugar works perfectly, just taste as you go. The Thai chili can be swapped for serrano or jalapeño, but leave the seeds in for extra heat. Coconut milk separating? Give it a quick whisk before using—it’s normal. For the broccoli, bigger florets stay crispier, so don’t cut them too small. And if you’re prepping ahead, blanch the broccoli 30 seconds in boiling water to keep it vibrant until cooking. The rice? Jasmine is non-negotiable—it’s the star of the side dish.
This reheats like a dream—best the next day when flavors meld. Store leftovers in an airtight container for 3-4 days in the fridge, or freeze for 2 months. I like to portion the sauce separately so it doesn’t get soggy. For meal prep, double the sauce—it’s amazing over rice bowls later in the week. And pro tip: Save the lime zest from juicing—it’s perfect for garnish or brightening up future dishes.
Why You'll Love This Recipe
- One-Pan Magic: Honestly, this dish is my lazy night hero—just a sheet pan, a few ingredients, and 20 minutes later, you’ve got dinner. The broccoli roasts while the steak sears, and the garlic-ginger marinade does all the work for you.
- Umami Bomb: That fish sauce and ginger combo? It’s the secret weapon. The steak gets this perfect char on the outside with tender, juicy layers inside, and the broccoli soaks up just enough of that savory-sweet sauce to make every bite ridiculously good.
- Leftover Goldmine: Between us, this is my go-to for meal prep. The flavors actually get better the next day—reheat it, toss in some rice, and boom, instant lunch. My kids beg for it, and I don’t even have to cook twice.
- Budget-Friendly Feast: Flank steak stretches further than you’d think, and broccoli is cheap but feels fancy. I’ve made this for date nights, family dinners, and even as a quick work lunch—no one ever guesses how simple it is.
Step-by-step instructions for authentic Thai beef and broccoli
Here's how to create the perfect balance of bold flavors and tender textures in this restaurant-style dish.
Prepare the Flank Steak for Perfect Tender Bites
Slice the 1.5 lb flank steak thinly against the grain into ¼-inch strips—this ensures each bite will be fork-tender. I like to use a sharp chef's knife and work quickly to maintain even thickness. Pat the slices dry with paper towels to remove any excess moisture, which helps them sear beautifully.
In a small bowl, combine 2 tbsp fish sauce, 2 tbsp soy sauce, 2 tbsp palm sugar, and 1 tsp salt. Add the steak strips and toss gently to coat evenly. Let them marinate for 15-20 minutes at room temperature. This marinade creates the perfect balance of salty, sweet, and umami flavors that penetrate the meat.
Build the Flavor-Packed Sauce Base
Heat 2 tbsp neutral oil in a large wok or skillet over medium-high heat until shimmering. Add the 8 cloves minced garlic and 2 tbsp grated fresh ginger, cooking for 30 seconds until fragrant—this prevents the garlic from burning while releasing its aromatic oils.
Add the 1 whole fresh Thai chili (seeds removed) and stir for 10 seconds until it softens slightly. Pour in 3 tbsp oyster sauce, 0.25 cup coconut milk, and 2 tbsp lime juice, stirring constantly for 1-2 minutes until the sauce begins to thicken. This creates the velvety, slightly tangy foundation that defines authentic Thai flavors.
Stir-Fry the Broccoli to Crisp-Tender Perfection
Add the 1.5 lb broccoli florets to the wok in a single layer, spreading them out evenly. Stir-fry for 3-4 minutes until the edges turn bright green and slightly crisp. The key here is to keep the broccoli moving constantly—this ensures even cooking and prevents any florets from becoming mushy.
Push the broccoli to one side of the wok and add the marinated steak strips in a single layer. Cook undisturbed for 1-2 minutes until they develop a golden-brown crust. Flip the steak and toss everything together for 30 seconds until the steak reaches 145°F internally and the broccoli is bright green with crisp edges.
Finish with Perfect Sauce Coating
Return the combined steak and broccoli to the sauce, tossing everything together for 1-2 minutes until the steak is fully coated in the glossy, silky sauce. The sauce should cling beautifully to both ingredients, creating that signature restaurant-style finish.
Taste and adjust seasoning if needed—add a splash more fish sauce for saltiness, lime juice for tang, or a pinch of palm sugar for sweetness. Garnish with 3 whole sliced green onions just before serving to add a fresh, bright finish that cuts through the richness.
Pro Tips For Making Authentic Thai Beef And Broccoli
- SLICE THIN, COOK FAST: I learned this the hard way—thick flank steak slices turn chewy in stir-fry heat. Cut against the grain into ¼-inch strips, then sear in a screaming-hot wok for 30 seconds max. Overcrowding drops the temp, and you’ll end up with sad, gray meat instead of tender, caramelized bites.
- PEEL GINGER LIKE A PRO: Fresh ginger’s tough skin hides the good stuff. Use a spoon’s back to scrape off the outer layer first, then thinly slice lengthwise (not crosswise) to maximize surface area for that bright, punchy flavor. Crosswise slices? You’re basically hiding half the ginger’s power.
- STOP BOILING THE BROCCOLI: Crisp-tender broccoli is the difference between "home cook" and "restaurant-quality." Blanch florets in salted water for exactly 30 seconds, then shock in ice water. Overcook it, and you’ll drown the dish in sad, mushy greens—no one wants that.
- TOSS IN GARLIC LAST: Raw garlic burns faster than you’d think, and it turns bitter when fried too long. Add minced cloves to the wok just before the beef, let them sizzle for 10 seconds, then hit with fish sauce. Timing this right means you get aromatic garlic, not acrid smoke.
Wine and beer pairings for this dish
Thai White Wine Pairings
For this dish, I reach for crisp, aromatic white wines that complement the dish’s sweet-savory balance without overpowering it. A Thai-inspired Riesling from Germany—like Dr. Loosen Blue Slate—is my go-to.
Its bright acidity and hints of citrus and stone fruit mirror the lime and chili in the sauce, while its slight sweetness echoes the palm sugar. Serve it slightly chilled (50-55°F) to enhance its refreshing qualities. 🍷
Light-Bodied Reds
If you prefer red wine, a Pinot Noir from Oregon or New Zealand works beautifully. Look for one with delicate berry and floral notes, like La Crema Sonoma Coast.
Its light body and subtle earthiness won’t clash with the dish’s umami depth, while its acidity keeps the palate clean. Avoid heavy Cabernets—they’ll dominate the dish’s delicate flavors.
Thai-Inspired Beer Options
A Thai lager like Singha or Chang is a fantastic match—its crisp, slightly malty profile complements the dish’s coconut and chili notes. For craft beer lovers, a wheat beer with citrus and spice, like Allagash White, adds a refreshing contrast.
Avoid heavy IPAs or stouts, as their bitterness can overpower the dish’s sweet-savory balance. 🍺
Non-Alcoholic Pairings
For a non-alcoholic option, I love Thai iced tea—sweet, slightly floral, and effervescent. It mirrors the dish’s sweetness while cutting through the richness. Alternatively, a sparkling lime soda (like San Pellegrino Aranciata Rossa) adds a tangy, fizzy contrast that cleanses the palate between bites.
Serving Temperature Tips
Wine should be served slightly cooler than room temperature—around 50-55°F for whites and 55-60°F for reds. Beer should be well-chilled (38-42°F) to highlight its crispness. Pro tip: Use an ice bucket for quick chilling or a wine fridge for consistent temperatures.
The right temperature makes all the difference in enhancing the dish’s flavors. ✨
Nutrition facts
Frequently asked questions
Can I substitute flank steak with another cut?
Sirloin or ribeye work well—just slice them thinly against the grain. For extra tenderness, try top round, but marinate it 30-45 minutes instead of 15-20. Avoid fatty cuts like ribeye for stir-frying, as they can make the sauce greasy.
How do I adjust the spice level?
The recipe uses a single Thai chili with seeds removed for mild heat. For more spice, add 1-2 extra chilies or ½ tsp chili flakes. To reduce heat, omit the chili entirely or use ½ tsp sugar to balance it. Taste the sauce before serving—Thai flavors are all about balance!
Can I make this dish ahead of time?
Yes! The flavors actually improve overnight. Store leftovers in an airtight container for 3-4 days. Reheat gently in a skillet with 1 tsp oil over medium heat for 2-3 minutes to restore crispness. The sauce may thicken—add 1 tsp water if needed. Best reheated the next day!
What if I don't have fish sauce?
Use 2 tbsp soy sauce + 1 tsp Worcestershire sauce as a substitute. For deeper umami, add ½ tsp MSG (optional). The dish will still taste great, though it won't be authentically Thai. Fish sauce is key for that signature savory depth.
Can I use frozen broccoli?
Frozen works, but fresh is ideal for texture. If using frozen, thaw and dry it thoroughly first to prevent a soggy stir-fry. For best results, steam the broccoli for 2 minutes before stir-frying to maintain crispness. Fresh broccoli stays vibrant and crunchy—worth the effort!
