By Grace Moser | 30 min | Serves 4
I’ll be upfront: I used to think homemade beef and broccoli was always going to be a pale imitation of the real thing.
Too watery. Not glossy enough. The beef ends up chewy and you’re eating it over rice trying to convince yourself it’s fine.
And then I figured out what I was doing wrong. Spoiler: it was a few small things, and fixing them changed everything.
This recipe gives you that thick, sticky, deeply savory sauce that clings to every piece of beef. The broccoli stays bright green with a little bite to it. And the beef? Tender enough to cut with a fork.
All of that, in about 30 minutes. Keep reading because the pro tips section alone is going to save you from making the mistakes most people make on their first attempt. 👇

What You’ll Need
For the Beef
- 1 lb (450g) flank steak, thinly sliced against the grain
- 2 tbsp cornstarch
- 1 tbsp soy sauce
- 1 tbsp vegetable oil
For the Sauce
- 1/3 cup low-sodium soy sauce
- 2 tbsp oyster sauce
- 1 tbsp hoisin sauce
- 1 tbsp brown sugar
- 1 tsp sesame oil
- 1/2 cup low-sodium beef broth
- 1 tbsp cornstarch
For the Stir-Fry
- 4 cups broccoli florets (about 1 large head)
- 3 cloves garlic, minced
- 1 tsp fresh ginger, finely grated
- 1 tbsp vegetable oil
- 1 tbsp sesame seeds, for garnish (optional)
- 2 green onions, sliced, for garnish (optional)
Tools You’ll Need
- Large wok or 12-inch skillet (cast iron or stainless works great)
- Sharp chef’s knife
- Cutting board
- Microplane or box grater (for the ginger)
- Small mixing bowl (for the sauce)
- Tongs or wooden spoon
- Measuring cups and spoons
Pro Tips
1. Slice the beef against the grain and freeze it first. Pop your flank steak in the freezer for 20-25 minutes before slicing. It firms up just enough to get those paper-thin slices that cook fast and stay tender. This one step makes a noticeable difference.
2. Don’t skip coating the beef in cornstarch. That cornstarch coating is what gives the beef that slightly crispy exterior and helps the sauce stick to it properly. It also helps thicken the sauce as it all cooks together.
3. Your pan needs to be ripping hot before the beef goes in. If the pan isn’t hot enough, the beef steams instead of sears and you lose that caramelized flavor that makes this dish so good. You should hear a loud sizzle the moment the beef hits the pan.
4. Cook the beef in batches. Crowding the pan drops the temperature and the beef won’t brown. Even if it feels slower, two batches gives you better results every single time.
5. Don’t overcook the broccoli. Two to three minutes max. It should still have a little snap to it. Overcooked broccoli turns mushy and army green, and that’s not what we’re going for here.
Substitutions and Variations
| Ingredient | Swap / Variation |
|---|---|
| Flank steak | Skirt steak, sirloin, or ribeye all work. Even ground beef in a pinch. |
| Broccoli | Broccolini, snap peas, baby bok choy, or a mix of all three |
| Oyster sauce | Vegetarian oyster sauce (mushroom-based) for a plant-forward version |
| Soy sauce | Tamari for a gluten-free option, or coconut aminos for a lower-sodium take |
| Brown sugar | Honey or maple syrup work just as well |
| Beef broth | Chicken broth or even water with a splash of Worcestershire |
| Beef entirely | Swap for chicken thighs, shrimp, tofu, or tempeh for a completely different vibe |
Want to add some heat? A teaspoon of chili garlic sauce or a pinch of red pepper flakes stirred into the sauce does the job perfectly.
Make Ahead Tips
This recipe is genuinely great for meal prep. Here’s how to get ahead of it:
- Slice and marinate the beef up to 24 hours in advance. Keep it covered in the fridge.
- Mix the sauce up to 3 days ahead and store it in a sealed jar in the fridge. Give it a shake before using since the cornstarch will settle.
- Blanch the broccoli a day ahead. Submerge the florets in boiling water for 60 seconds, transfer to ice water, then drain and refrigerate.
When you’re ready to cook, it genuinely comes together in under 15 minutes.
How to Make It
- Prep the beef. Slice the flank steak very thin, against the grain. Toss with 2 tbsp cornstarch, 1 tbsp soy sauce, and 1 tbsp vegetable oil. Let it sit while you prep everything else.
- Make the sauce. In a small bowl, whisk together the soy sauce, oyster sauce, hoisin sauce, brown sugar, sesame oil, beef broth, and 1 tbsp cornstarch. Set aside.
- Cook the broccoli. Heat 1 tbsp oil in your wok over high heat. Add the broccoli florets and stir-fry for 2-3 minutes until bright green and just tender. Remove and set aside.
- Sear the beef. Add a touch more oil to the pan if needed. Sear the beef in a single layer (in two batches) for about 1 minute per side. You want color on the outside. Remove and set aside with the broccoli.
- Cook the aromatics. In the same pan, add the garlic and ginger. Stir constantly for about 30 seconds. It should smell incredible at this point.
- Add the sauce. Pour the sauce into the pan and let it bubble for 1-2 minutes, stirring, until it thickens and turns glossy.
- Combine everything. Add the beef and broccoli back into the pan. Toss everything to coat. Cook for another minute until it’s all heated through and coated in that beautiful sauce.
- Serve immediately over steamed white rice or noodles. Top with sesame seeds and green onions if using.

Nutritional Info and Meal Pairings
Approximate Nutrition Per Serving
| Nutrient | Amount |
|---|---|
| Calories | ~320 kcal |
| Protein | ~28g |
| Carbohydrates | ~18g |
| Fat | ~14g |
| Sodium | ~780mg (use low-sodium soy sauce to reduce) |
| Fiber | ~3g |
Note: Figures are estimates and do not include rice or noodles.
Meal Pairings
- Steamed jasmine or white rice — the classic and for good reason
- Lo mein or rice noodles — perfect if you want something a little more filling
- Egg drop soup — a simple side that makes this feel like a full restaurant meal at home
- Cucumber salad with a rice vinegar dressing to cut through the richness of the sauce
- Spring rolls if you’re really going for it and making a full spread
Diet Swaps
- Gluten-free: Use tamari instead of soy sauce and double-check your oyster sauce and hoisin labels
- Lower sodium: Coconut aminos instead of soy sauce and skip the hoisin
- Dairy-free: Already dairy-free as written 🙌
- Higher protein: Double the beef or add edamame to the broccoli
Leftovers and Storage
This one keeps really well, which is great news if you’re making it as part of your weekly meal prep.
- Fridge: Store in an airtight container for up to 4 days. The sauce actually gets a little more flavorful overnight.
- Freezer: Freeze for up to 2 months. Thaw overnight in the fridge before reheating.
- Reheating: A quick 2-3 minute reheat in a skillet over medium heat with a splash of water or broth keeps the sauce from getting too thick. Microwaving works too, just heat in 60-second bursts.
One thing to know: the broccoli will soften a bit after refrigerating. If that bothers you, cook a fresh batch of broccoli when reheating and toss it in with the leftover beef and sauce.
FAQ
Can I use a regular skillet instead of a wok?
Yes. A large 12-inch stainless steel or cast iron skillet works just fine. The key is getting it properly hot before anything goes in. A wok heats faster and more evenly, but it’s not a dealbreaker if you don’t have one.
My sauce came out too thin. What happened?
A few things could cause this. Make sure your cornstarch is fully dissolved in the sauce before adding it. Also, let the sauce bubble and reduce for a full 1-2 minutes before adding the beef back in. If it’s still too thin, mix 1 tsp cornstarch with 2 tsp cold water and stir it in.
Can I make this with chicken instead of beef?
Absolutely. Chicken thighs sliced thin work really well here. The cooking time is similar, just make sure the chicken is cooked through (internal temp of 165°F / 74°C).
What cut of beef is actually best for this?
Flank steak is classic for a reason. It’s lean, takes on flavor well, and slices beautifully against the grain. Skirt steak is a close second. Avoid anything too thick or fatty like chuck, it won’t cook evenly enough in a quick stir-fry.
Is this recipe kid-friendly?
Very much so. The sauce is savory and mildly sweet without any spice. If you have picky eaters, skip the ginger or reduce it slightly and the flavor becomes even more approachable.
Can I double the recipe?
Yes, but still cook the beef in small batches. Doubling the batch size in the pan at once is exactly where things go wrong. Cook in multiple rounds and combine everything at the end.
Wrapping Up
This is one of those recipes that’s genuinely worth making at least once, because once you do, you’ll be surprised it took you this long.
The sauce hits every note, the beef is actually tender, and the whole thing comes together faster than delivery would ever show up at your door.
Give it a go this week. And when you do, drop a comment below — tell me how it turned out, what you changed, or any questions you have. I read every single one and I love hearing how these recipes land in your kitchen. 🍴