Main Courses
This authentic Thai beef and broccoli delivers restaurant-quality wok-heated bites with a perfect balance of crispy beef and tender broccoli, all coated in a fragrant garlic-lime glaze. The secret lies in high-heat stir-frying and a sauce that marries sweet, salty, and umami flavors—no shortcuts here. I’ve perfected this dish after years of testing, ensuring every element—from the marinade to the final glaze—stays true to Thai street food roots while being accessible for home cooks.
The recipe begins with thinly sliced beef marinated in a blend of soy sauce, garlic, and ginger, which tenderizes the meat and infuses it with aromatic depth. Meanwhile, the broccoli gets a quick blanch to maintain its vibrant color and slight crunch before joining the wok. The sauce, a harmonious mix of oyster sauce, fish sauce, and a touch of sugar, creates a glossy, sticky finish that clings to every bite—crispy on the outside, tender on the inside.
What sets this dish apart is the balance of textures and flavors: the beef develops a caramelized crust from the wok’s heat, while the broccoli stays bright and slightly crisp. The garlic-lime glaze adds a bright, tangy contrast, cutting through the richness of the beef and sauce. Serve it over steamed jasmine rice to soak up every last drop of that flavorful sauce—this is comfort food with a Thai twist.
For those watching their gluten intake, simply swap the soy sauce for tamari or coconut aminos. The dish also scales effortlessly, making it perfect for weeknight dinners or meal prep. Here’s how to bring this authentic Thai classic to your table—no takeout required.
Ingredients for authentic thai beef and broccoli
Thinly sliced beef, crisp broccoli florets, and a fragrant garlic-lime glaze—this is your shortcut to Thai street food magic.
| Ingredient | Amount | Notes |
|---|---|---|
| Flank Steak 🥩 | 1 lb | Thinly sliced against grain |
| Broccoli Florets 🥦 | 1 ½ lbs | Medium-sized, stems trimmed |
| Soy Sauce 🥢 | ¼ cup | Use gluten-free tamari if needed |
| Garlic Cloves 🧄 | 6 cloves | Minced for marinade and glaze |
| Ginger Root 🌿 | 2 tbsp | Freshly grated, not powdered |
| Oyster Sauce 🍲 | ¼ cup | Look for authentic Thai brands |
| Fish Sauce 🌊 | 2 tbsp | Red Boat preferred for authenticity |
| Brown Sugar 🍯 | 2 tbsp | Light or dark works |
| Lime Juice 🍋 | ¼ cup | Freshly squeezed, no bottled |
| Sesame Oil 🫒 | 2 tbsp | Toasted sesame oil for aroma |
| Neutral Oil 🫒 | ¼ cup | Vegetable or canola preferred |
| Green Onions 🧅 | 4 whole | Sliced for garnish |
| Salt 🧂 | 1 tsp | Kosher or sea salt |
| Black Pepper 🌶️ | ½ tsp | Freshly ground |
| Jasmine Rice 🍚 | 1 ½ cups | Uncooked, for serving |
The beef is everything here. Flank steak is perfect—it's lean but tender when sliced thin. Grab it from the butcher counter if possible, or ask them to slice it for you against the grain. Thai markets often have pre-sliced beef for stir-fry, but if you're using the whole cut, let it sit at room temp for 20 minutes before slicing. For broccoli, freshness matters—look for bright green florets with tight buds. The stems are edible, but trimming them makes for cleaner bites. If you're prepping ahead, blanch the broccoli first to keep it vibrant.
No oyster sauce? Hoisin sauce plus a splash of soy sauce works in a pinch, though it won't be quite the same. Fish sauce is non-negotiable for that umami punch—Red Boat brand is the gold standard, but any reputable brand will do. Short on lime juice? Lemon juice plus a pinch of sugar gets you close, but the acidity won't be identical. The sesame oil is what gives this dish its signature aroma—toasted sesame oil is a must, not the regular kind. For the garlic and ginger, fresh is non-negotiable. Powdered just won't cut it here. And if you're gluten-free, tamari or coconut aminos swap in seamlessly for soy sauce.
Marinate the beef for at least 30 minutes—up to 2 hours if you can spare the time. The broccoli can be blanched ahead and stored in cold water to keep it bright. The sauce keeps in the fridge for 5 days, but the beef and broccoli are best used fresh. If you're prepping for the week, cook the rice in bulk—it reheats beautifully. Store everything separately in airtight containers. The dish tastes even better the next day as the flavors meld, so double the batch if you can—leftovers make amazing lunches.
Why You'll Love This Recipe
- One-Pan Magic: I swear by this recipe—just the steak, broccoli, and a quick stir-fry in one pan. No chopping boards full of mess, no extra dishes to wash. That soy-ginger punch caramelizes right there while you prep the rice.
- Umami Bomb: The moment the garlic and ginger hit the hot pan? Chef’s kiss. The soy sauce cuts through the richness of the flank steak, and the broccoli soaks up just enough of that sticky, savory sauce. It’s the kind of flavor that makes you pause mid-bite.
- Leftover Hero: This dish actually improves the second day. The flavors meld even deeper, and the steak gets more tender. Pack it in lunches or reheat it for a lazy dinner—no one will guess it’s not fresh.
- Budget Flex: Flank steak stretches far, and broccoli’s one of the most affordable veggies. A single cut of meat feeds four, and the ingredients won’t break the bank. Plus, the leftovers? Free meals for days. Win-win.
Step-by-step instructions for authentic Thai beef and broccoli
Here's how to make restaurant-quality Thai beef and broccoli with crispy edges and bold flavors.
Marinate the Flank Steak for Maximum Flavor
Place the 1 lb flank steak between two sheets of plastic wrap and slice it thinly against the grain into ¼-inch thick strips. This ensures tender bites that cook quickly in the wok. In a bowl, combine the 0.25 cup soy sauce, 0.25 cup oyster sauce, 2 tbsp fish sauce, 2 tbsp brown sugar, 2 tbsp freshly grated ginger root, 6 minced garlic cloves, and 0.25 cup freshly squeezed lime juice. Add the steak strips and toss to coat completely. Let it marinate for at least 30 minutes - I like to do this while I prep the rest of the ingredients.
I know it seems like a lot of sauce, but trust me - this marinade creates that signature Thai balance of sweet, salty, and tangy. The longer it marinates, the more flavorful your beef will be. If you're short on time, even 15 minutes will work, but 30 minutes gives you that authentic depth of flavor.
Prepare the Broccoli and Cook the Jasmine Rice
While the steak marinates, trim the stems from the 1.5 lbs broccoli florets and cut them into even-sized pieces. You want them to cook quickly in the wok, so keep them about 1-inch in diameter. Rinse them under cold water and pat completely dry - any moisture will steam them instead of crisping them up.
Cook the 1.5 cups jasmine rice according to package instructions, using a 1:1.5 rice-to-water ratio. I like to use a rice cooker for this step as it gives you perfectly fluffy rice every time. While the rice cooks, you'll have time to finish prepping the rest of your dish - no waiting around here.
Create the Garlic-Lime Glaze
In a small bowl, mix together 2 tbsp toasted sesame oil, 1 tsp salt, and 0.5 tsp freshly ground black pepper. This will be your finishing glaze that adds that signature Thai aroma and depth of flavor. Keep this mixture separate until the very end - we want to add it when everything is hot and ready to serve.
The sesame oil is what gives this dish that authentic Thai restaurant smell. I always use toasted sesame oil instead of regular - it makes a huge difference in the final flavor. You can find it in the international aisle of most grocery stores, or online if your local store doesn't carry it.
Wok-Heat the Beef and Broccoli for Perfect Texture
Heat a wok or large skillet over high heat until it's smoking hot. Add the 0.25 cup neutral oil and let it get shimmering hot. Working in batches if needed, add the marinated beef strips and cook for 1-2 minutes until they're browned on the edges and cooked through. Remove the beef and set it aside on a plate.
In the same wok, add the prepared broccoli florets and stir-fry for 3-4 minutes until they're bright green and just tender-crisp. You want them to still have a little bite - they'll finish cooking when everything comes back together. Don't overcrowd the wok or the vegetables will steam instead of getting that perfect wok-hei flavor.
Combine and Finish with the Garlic-Lime Glaze
Return the beef to the wok with the broccoli and add the garlic-lime marinade. Stir everything together and cook for another 1-2 minutes until everything is heated through and coated in the sauce. Taste and adjust seasoning if needed - you might want to add a little more soy sauce for saltiness or lime juice for tang.
Drizzle the sesame oil glaze over the top and toss gently to coat. Garnish with sliced green onions and serve immediately over the cooked jasmine rice. The beef should be tender with crispy edges, the broccoli bright green and slightly crisp, and everything coated in that perfect balance of sweet, salty, and tangy sauce.
Pro Tips For Making Authentic Thai Beef And Broccoli
- Slice Against the Grain: Flank steak’s tough when cut with the grain—take the 5 minutes to slice perpendicular to the muscle fibers before cooking. You’ll end up with tender bites that don’t turn to shoe leather, and the sauce clings better too.
- Blanch Broccoli First: I used to toss raw florets in the pan and wondered why they stayed crunchy while the beef got soggy. Blanch them in boiling water for 30 seconds, then shock in ice water—this softens them just enough to absorb flavor without turning to mush.
- Use Dark Soy Sauce: That light soy sauce won’t cut it for authentic depth. Grab a bottle of dark soy sauce (or mix 1 tsp light + ½ tsp molasses) and add it after the beef browns. It’ll give that rich, caramelized sheen the dish needs.
- Don’t Overcrowd the Pan: I learned this the hard way—dumping everything in at once steams the beef instead of searing it. Cook the steak in batches if needed, then push it to the sides and add garlic/ginger to bloom before tossing in the broccoli. The crust makes all the difference.
Flavor customization for this dish
Spicy Kick Boost
For a fiery Thai street food twist, add 1 tbsp Thai chili paste (like Maesri) or 1 tsp sambal oelek to the marinade and sauce. Start with ½ tsp if you're sensitive to heat—this adds authentic Thai heat without overpowering the dish. For extra depth, toss in 1 tsp crushed Thai bird's eye chilies with the broccoli during stir-frying. 🌶️
Sweet & Tangy Balance
Crank up the sweetness with 1 extra tbsp brown sugar in the sauce for a caramelized finish, or add 1 tbsp honey for a smoother profile. For tang, increase lime juice to ⅓ cup and add 1 tsp rice vinegar to brighten the flavors. This variation works especially well with rib-eye steak instead of flank for richer sweetness.
Umami Bomb Variations
Swap 1 tbsp fish sauce for 1 tbsp soy sauce + 1 tsp miso paste to deepen umami without overpowering. For a vegetarian twist, replace beef with shitake mushrooms (sliced) or extra-firm tofu (pressed and cubed). The mushrooms absorb flavors beautifully—marinate them in the same sauce for 20 minutes before cooking.
Herb & Aroma Infusions
Add 1 tbsp chopped Thai basil or cilantro to the sauce for freshness, or stir in ½ tsp ground coriander for warmth. For a fragrant touch, infuse the neutral oil with 1 garlic clove and 1-inch ginger slice (removed after heating). This subtle aroma elevates the dish without altering its balance. ✨
Coconut Cream Twist
For a creamy Thai-inspired variation, stir 2 tbsp coconut cream into the sauce after cooking. This works especially well with chicken breast (sliced thin) instead of beef. The coconut adds richness while keeping the dish light—perfect for a fusion take on this classic. Garnish with toasted coconut flakes for texture.
Smoky Charred Flavor
For a smoky depth, sear the beef in a cast-iron skillet until charred, then finish in the wok. Alternatively, add ½ tsp smoked paprika to the marinade or toss in 1 tsp toasted sesame seeds with the green onions. This variation mimics the flavors of Thai grilled skewers while keeping the dish wok-friendly.
Nutrition facts
Frequently asked questions
Can I use a different cut of beef for this recipe?
While flank steak is ideal, you can use sirloin or ribeye for richer flavor. For extra tenderness, slice against the grain into ¼-inch strips. Avoid tough cuts like chuck—they won’t cook quickly enough in the wok. If using ribeye, reduce marinating time to 15 minutes to prevent over-tenderizing.
Why does my broccoli turn mushy instead of crisp?
Overcrowding the wok or cooking too long steams the broccoli instead of crisping it. Use a large wok or skillet and cook in batches if needed. Keep florets 1-inch in diameter and stir-fry for 3-4 minutes max—they should stay bright green with a slight bite. Pat them completely dry before cooking to prevent steaming.
How can I make this gluten-free?
Swap the soy sauce for tamari or coconut aminos (use 0.3 cup for extra umami). Check oyster sauce labels—many contain gluten. For a gluten-free alternative, mix 2 tbsp coconut aminos + 1 tbsp rice vinegar to mimic the depth. The dish will still taste authentic with these adjustments!
Can I prep this dish ahead of time?
Yes! Marinate the beef for up to 4 hours (or overnight in the fridge). Blanch the broccoli ahead and store in cold water to keep it vibrant. Cook the rice separately when ready to serve. Reheat the beef and broccoli in the wok for 2-3 minutes with a splash of water to restore crispness. The sauce can be made 1 day ahead and reheated gently.
What’s the secret to that perfect wok-hei flavor?
High heat and a smoking-hot wok are key! Use a carbon steel or cast-iron wok for best results. Work in batches to avoid crowding, and let the beef sear undisturbed for 30 seconds before stirring. A splash of neutral oil (like vegetable or canola) helps create that signature smoky aroma. Don’t skip the sesame oil glaze—it adds the final aromatic punch!
