Beef and broccoli is the dish that made me fall in love with Chinese takeout as a kid, and this homemade version is the one that finally beat my local restaurant. The secret is velveting the beef in a cornstarch and soy marinade so it stays silky and tender even after a screaming-hot sear, and blanching the broccoli briefly so it keeps its snap while soaking up sauce.
Everything comes together in one wok in about 30 minutes flat, and the sauce is a simple pantry stir-together of oyster sauce, soy, a splash of Shaoxing wine, and a little sugar to round it out. You get that deep, glossy, savory-sweet coating that clings to every piece instead of pooling at the bottom of the pan.
Serve it over steamed jasmine rice and you have a better-than-takeout dinner that costs a fraction of delivery, with broccoli that is actually green and beef that is actually tender.
Why You'll Love This Recipe
About the Ingredients
1 1/4 lb (570g) flank steak, sliced thinly against the grain
Flank steak is classic; sirloin or skirt steak also work well. Buy it well-chilled so it is easier to slice paper-thin.
1 1/2 tbsp cornstarch, divided
One tablespoon goes into the beef marinade, the rest thickens the sauce. Potato starch is a fine substitute.
1/4 tsp baking soda
This is the velveting trick that keeps beef tender. Do not skip it, but do not exceed the amount or the beef turns spongy.
3 tbsp soy sauce, divided
Use regular soy sauce, not dark, for the marinade. Tamari works for a gluten-free version.
1 tbsp Shaoxing wine (or dry sherry)
Adds that authentic restaurant aroma. Dry sherry or mirin are good substitutes.
1 tbsp oyster sauce
The savory backbone of the sauce. Hoisin or a splash of fish sauce can stand in if you are out.
1 tsp toasted sesame oil plus 2 tbsp neutral oil for cooking
Sesame oil is for flavor, not frying. Use peanut, canola, or avocado oil for the high-heat sear.
1 lb (450g) broccoli crowns, cut into bite-size florets
Crowns save prep time and have less waste. Frozen florets work if you blanch them 1 minute longer.
3 cloves garlic, minced, and 1 tbsp fresh ginger, grated
Fresh is best here since they hit the wok at the end. Jarred ginger is acceptable in a pinch.
1/3 cup (80ml) low-sodium chicken broth or water
Low-sodium broth keeps the sauce from getting too salty. Water works if you taste and adjust.
1 tbsp granulated sugar
Balances the salt and gives that takeout gloss. Honey or brown sugar can substitute.
2 tsp toasted sesame seeds and 2 scallions, sliced, for garnish
Optional but adds freshness and crunch. Skip if you are out; the dish is still great.
Tips & Tricks
Do not overcrowd the wok
Sear the beef in a single layer in two batches over high heat. A crowded pan steams the meat instead of browning it, and you lose that caramelized flavor.
Blanch the broccoli first
Boiling it for 60 seconds and then shocking it in ice water sets the bright green color and lets it finish cooking in the sauce without going limp.
- Slice the beef against the grain and keep it thin: Look for the lines of muscle fiber and cut perpendicular to them at about 1/8 inch. Thick or with-the-grain slices will be chewy no matter how long you cook them.
Pro Tips
Step-by-Step Instructions
1. Velvet the beef
In a bowl, toss the sliced flank steak with 1 tablespoon cornstarch, the baking soda, 1 tablespoon soy sauce, the Shaoxing wine, and 1 teaspoon sesame oil. Let it sit 15 minutes at room temperature while you prep everything else.
2. Mix the sauce
Whisk the remaining 2 tablespoons soy sauce, oyster sauce, chicken broth, sugar, and the remaining 1/2 tablespoon cornstarch in a small bowl until smooth. Set it next to the stove.
3. Blanch the broccoli
Bring a pot of salted water to a rolling boil (212°F / 100°C) and cook the broccoli florets for 60 seconds, until bright green and barely tender. Drain and plunge into ice water for 1 minute, then drain well.
4. Sear the beef
Heat 1 tablespoon neutral oil in a wok or large skillet over high heat until it shimmers (about 400°F / 205°C). Add half the beef in a single layer and sear 60 to 90 seconds per side until deep golden brown at the edges; it should no longer be pink inside. Transfer to a plate and repeat with the remaining oil and beef.
5. Bloom the aromatics
Lower the heat to medium (about 325°F / 165°C), add the garlic and ginger to the wok, and stir constantly for 15 to 20 seconds until fragrant but not browned.
6. Simmer the sauce
Pour in the sauce mixture and bring to a simmer (about 200°F / 93°C). Cook 60 to 90 seconds, stirring, until it bubbles at the edges and thickens enough to coat the back of a spoon.
7. Toss everything together
Return the beef and its juices along with the broccoli to the wok. Toss over medium-high heat for 60 seconds until everything is glossy and hot all the way through (160°F / 71°C for the beef).
8. Garnish and serve
Off the heat, scatter with sesame seeds and scallions. Serve immediately over steamed jasmine rice while the sauce is still clinging and glossy.
Delicious Variations
Spicy Garlic Version
Add 1 teaspoon chili crisp or 1/2 teaspoon red pepper flakes with the aromatics for a Sichuan-style kick.
Mushroom and Broccoli
Swap half the beef for sliced shiitake mushrooms and add 1 extra tablespoon oyster sauce for a meatier vegetarian dish.
Ginger-Scallion Beef
Double the ginger and finish with a handful of sliced scallions for a brighter, punchier sauce.
How to Store Chinese Restaurant-Style Beef and Broccoli Stir Fry
Refrigerator
Store in an airtight container in the refrigerator for up to 3 days. Keep the rice separate so it does not soak up all the sauce.
Freezer
Freeze the cooled stir fry in a freezer-safe container for up to 2 months. Thaw overnight in the refrigerator before reheating.
Reheating
Reheat in a skillet over medium heat (about 300°F / 150°C) with a splash of water or broth for 3 to 4 minutes, tossing until hot, to revive the sauce and keep the beef tender.
Frequently Asked Questions
Q: How do I make beef and broccoli sauce thicker?
Whisk 1/2 tablespoon cornstarch with 1 tablespoon cold water and stir it in at a simmer for 60 seconds. Add it in small amounts so the sauce does not turn gluey.
Q: Why is my beef and broccoli beef tough?
Tough beef usually means it was sliced with the grain or overcooked. Slice thinly against the grain and sear it hot and fast, no more than 90 seconds per side.
Q: Can I make beef and broccoli ahead of time?
Yes, you can prep the marinade, sauce, and blanched broccoli up to a day ahead and refrigerate them separately. Stir-fry the beef fresh right before serving for the best texture.
Q: What is the best cut of beef for stir fry?
Flank steak is the classic choice, but sirloin, skirt steak, or thinly sliced ribeye all work. Look for a cut with visible grain you can slice across.
Q: Is beef and broccoli gluten-free?
Not as written, because soy sauce and oyster sauce contain wheat. Use tamari and a gluten-free oyster sauce, and check the Shaoxing wine label.
Give this beef and broccoli a try on your next busy weeknight and see how quickly it beats the delivery app. Snap a photo of that glossy sauce and tag me, and let me know which variation you made first.
Chinese Restaurant-Style Beef and Broccoli Stir Fry
This beef and broccoli stir fry tastes just like the Chinese restaurant version, with tender velveted beef and crisp broccoli in a glossy garlic-ginger sauce.
🧂 Ingredients
- 1 1/4 lb (570g) flank steak, sliced thinly against the grain
- 1 1/2 tbsp cornstarch, divided
- 1/4 tsp baking soda
- 3 tbsp soy sauce, divided
- 1 tbsp Shaoxing wine (or dry sherry)
- 1 tbsp oyster sauce
- 1 tsp toasted sesame oil plus 2 tbsp neutral oil for cooking
- 1 lb (450g) broccoli crowns, cut into bite-size florets
- 3 cloves garlic, minced, and 1 tbsp fresh ginger, grated
- 1/3 cup (80ml) low-sodium chicken broth or water
- 1 tbsp granulated sugar
- 2 tsp toasted sesame seeds and 2 scallions, sliced, for garnish
📋 Instructions
- 1Velvet the beef — In a bowl, toss the sliced flank steak with 1 tablespoon cornstarch, the baking soda, 1 tablespoon soy sauce, the Shaoxing wine, and 1 teaspoon sesame oil. Let it sit 15 minutes at room temperature while you prep everything else.
- 2Mix the sauce — Whisk the remaining 2 tablespoons soy sauce, oyster sauce, chicken broth, sugar, and the remaining 1/2 tablespoon cornstarch in a small bowl until smooth. Set it next to the stove.
- 3Blanch the broccoli — Bring a pot of salted water to a rolling boil (212°F / 100°C) and cook the broccoli florets for 60 seconds, until bright green and barely tender. Drain and plunge into ice water for 1 minute, then drain well.
- 4Sear the beef — Heat 1 tablespoon neutral oil in a wok or large skillet over high heat until it shimmers (about 400°F / 205°C). Add half the beef in a single layer and sear 60 to 90 seconds per side until deep golden brown at the edges; it should no longer be pink inside. Transfer to a plate and repeat with the remaining oil and beef.
- 5Bloom the aromatics — Lower the heat to medium (about 325°F / 165°C), add the garlic and ginger to the wok, and stir constantly for 15 to 20 seconds until fragrant but not browned.
- 6Simmer the sauce — Pour in the sauce mixture and bring to a simmer (about 200°F / 93°C). Cook 60 to 90 seconds, stirring, until it bubbles at the edges and thickens enough to coat the back of a spoon.
- 7Toss everything together — Return the beef and its juices along with the broccoli to the wok. Toss over medium-high heat for 60 seconds until everything is glossy and hot all the way through (160°F / 71°C for the beef).
- 8Garnish and serve — Off the heat, scatter with sesame seeds and scallions. Serve immediately over steamed jasmine rice while the sauce is still clinging and glossy.