Tender beef and juicy tomatoes are stir-fried in a sweet and savory sauce. This easy beef tomato stir-fry recipe is ready in just 30 minutes. The velveted beef stays tender and juicy while the tomatoes create a rich, flavorful sauce.

Jump to:
Beef tomato stir-fry is a classic Cantonese comfort food popular in Hong Kong, made with tender beef and tomatoes cooked in a sweet and savory sauce, with every household having its own version. It's best served with steamed white rice to soak up that tangy, savory tomato sauce. Growing up, my mom made this dish at least once a month, and this recipe stays true to her original version.
After making this Chinese dish for years, I've found that velveting the beef with a little baking soda keeps the slices tender and juicy during stir-frying.

Ingredients & Substitutes
Exact ingredient amounts are listed in the recipe card at the bottom of this page.
- Flank Steak: Slice against the grain into ¼-inch thick pieces for a tender bite. Sirloin, tri-tip, or hanger steak also works.
- Fresh Roma Tomatoes: Use ripe but firm tomatoes and cut each tomato lengthwise into 4 wedges so they soften without completely falling apart. Plum or medium-sized vine tomatoes also work.
- Onion: Yellow onion or white onion both work.
- Fresh Ginger
- Garlic Cloves: Use fresh garlic for the best flavor. Jarred minced garlic also works.
- Ketchup: I prefer Heinz ketchup for its classic flavor. Avoid artisan-style ketchup, which can have a different flavor profile.
- Green Onion
- White Granulated Sugar: Cane sugar also works.
- Vegetable Oil: Use a neutral, high smoke-point oil. Refined avocado oil or canola oil also works.
Beef Marinade
- Baking Soda: A small amount helps tenderize the beef. Do not skip this ingredient!
- Regular Soy Sauce: Light soy sauce also works. Use low-sodium soy sauce for a less salty result.
- Shaoxing Wine: Dry sherry also works.
- Cornstarch: Potato starch also works.
- Garlic Powder
- Cold Water
Cornstarch Slurry
- Cornstarch: Potato starch or tapioca starch also works to thicken the sauce.
- Cold Water
Note: Asian ingredients are typically available at most Asian grocery stores or online.
Expert Tips
- Use ripe, firm tomatoes so they soften while still holding their shape.
- Don't overcook the beef since it continues cooking with the tomatoes and sauce.
- Fold the tomatoes gently to keep the wedges from breaking apart.
Instructions
Below are step-by-step instructions on how to make Chinese beef tomato stir-fry:
- Slice the beef: If time permits, freeze the flank steak for 45 minutes to firm it up for easier slicing. Slice the beef against the grain at a 45-degree angle into ¼-inch thick pieces.
- Marinate the beef: Place the sliced beef in a large mixing bowl. Add all the marinade ingredients and mix well until the liquids are fully absorbed. Marinate at room temperature for 15 minutes.
- Mix the slurry: Whisk the cornstarch and cold water together in a small bowl until smooth. Set aside.
- Sear the beef: Heat the vegetable oil in a large pan or wok over medium heat. Add the marinated beef and quickly spread the slices apart into a single layer. Cook, stirring occasionally, until browned on the outside and slightly pink inside.
- Cook the aromatics: Add the garlic, onion, ginger, and ketchup. Stir-fry for 1 minute until fragrant and the onion is slightly softened.
- Add the tomatoes: Whisk the cornstarch slurry again, then pour it into the pan and add the tomatoes. Gently stir and simmer uncovered for 2-3 minutes until the tomatoes slightly soften and the sauce reduces and thickens.
- Season and serve: Gently fold in the sugar without breaking up the tomatoes. Remove from the heat and garnish with green onion. Serve immediately.
Storage & Reheating
- Refrigerator: Let leftovers cool completely, then store them in an airtight container for up to 4 days.
- Freezer: I don't recommend freezing this dish because the tomatoes become very soft and watery after thawing.
- Reheating: Reheat in a pan over medium heat for about 5 minutes with a splash of water, or microwave for 1-2 minutes until hot, stirring halfway through.
Variation
- Gluten-free: Use tamari or certified gluten-free soy sauce instead of regular soy sauce, certified gluten-free ketchup, and dry sherry instead of Shaoxing wine.
Pairing Suggestions
Serve Chinese tomato beef stir-fry with:
- Steamed jasmine rice: Soaks up the tangy, savory tomato sauce.
- Garlic bok choy: Adds a crisp, garlicky vegetable alongside the tender beef and tomatoes.
- Egg drop soup: Makes a light, comforting starter before the stir-fry.
FAQ
The tomatoes may have released too much liquid, or the cornstarch slurry may have settled before it was added. Whisk the slurry again right before adding it and simmer the sauce uncovered until reduced and thickened.
Use ripe but firm tomatoes and cut each tomato lengthwise into 4 wedges. Gently stir them into the sauce and cook just until slightly softened.
📖 Recipe

30-Min. Easy Beef Tomato Stir-Fry
Ingredients
- 0.5 lb flank steak (sirloin, tri-tip, or hanger steak also works)
- 4 medium roma tomatoes each cut lengthwise into 4 wedges
- 1 small onion diced
- 2 green onions finely chopped
- ½ tablespoon ginger thinly sliced
- 1 garlic clove minced
- ¼ cup ketchup
- 1 tablespoon white granulated sugar
- 1 tablespoon vegetable oil or any neutral oil
Beef Marinade:
- 2 teaspoon regular soy sauce or light soy sauce
- 1 tsp Shaoxing Cooking Wine or dry sherry
- 1.5 teaspoon cornstarch
- ¼ teaspoon baking soda
- ¼ teaspoon garlic powder
- 2 teaspoon water cold
Cornstarch Slurry:
- 1 tablespoon cornstarch
- 1 cup water cold
Instructions
- If time permits, freeze the flank steak for 45 minutes to firm it up for easier slicing. Slice the beef against the grain at a 45-degree angle into ¼-inch thick pieces.
- Place the sliced beef in a large mixing bowl. Add all the marinade ingredients and mix well until the liquids are fully absorbed. Marinate at room temperature for 15 minutes.
- Whisk the cornstarch and cold water together in a small bowl until smooth. Set aside.
- Heat the vegetable oil in a large pan or wok over medium heat. Add the marinated beef and quickly spread the slices apart into a single layer. Cook, stirring occasionally, until browned on the outside and slightly pink inside.
- Add the garlic, onion, ginger, and ketchup. Stir-fry for 1 minute until fragrant and the onion is slightly softened.
- Whisk the cornstarch slurry again, then pour it into the pan and add the tomatoes. Gently stir and simmer uncovered for 2-3 minutes until the tomatoes slightly soften and the sauce reduces and thickens.
- Gently fold in the sugar without breaking up the tomatoes. Remove from the heat and garnish with green onion. Serve immediately.






Kay Atchley
This was really good! I didn't have fresh tomatoes, but I wanted to try this so I used canned stewed tomatoes (2 cans). It was still very good. I'll try it again soon with fresh.
Christie Lai
Thanks so much for making my recipe, Kay! So glad you enjoyed it.
Halina
Amazing
Christie Lai
Thanks so much for making my recipe, Halina! Glad you enjoyed it!
Orlando Delos Reyes
Very delicious menu.. 😋😋😋
Christie Lai
Thank you so much for the kind comment and positive rating!
Leanne
Such a winner, success first time, really was like restaurant quality, thanks Christie!
Christie Lai
Thank you so much for making it and for sharing your positive experience, Leanne! Glad you enjoyed it 🙂
Chloe
Can I use canned tomatoes in this recipe? Or do you think it's important to use fresh for the texture?
Christie Lai
For best texture, fresh ripe tomatoes work best. I also find that canned tomatoes are more tangier than fresh ones so it can alter the taste of the stir fry. Hope this helps!
HG Li
This recipe is spot on. I grew up eating this dish. The beef came out perfect. The flavors were terrific and my family loved it!
Christie Lai
Thanks so much for making my recipe and so happy it was spot on! Glad your whole family enjoyed it too. Have a wonderful day!
Sharon
Love this recipe. Better than the Chinese takeaway. I’ve made this many times now, everybody loves it.
christieathome
Thanks so much for making my recipe, Sharon! I appreciate you making it so many times 🙂
Tiffany
Really delicious and simple recipe. I cooked the onions for an extra five minutes to get them soft. And let the entire dish simmer for about 10 minutes to thicken the sauce. Also added a 1/2 tsp of salt at the end and it was perfect! Next time I’m going to add a scrambled egg. Yum!!!
christieathome
Thanks so much for making my recipe, Tiffany! So glad you liked it and yes it's soo good with some scrambled eggs 🙂
Gary
Absolutely loved it! I don't think I'll ever need to order Chinese again. I only order this for the veg and sauce. Might even try it with chicken next time. Thank you Christie for sharing this recipe
christieathome
Thanks so much for making my recipe, Gary! Glad you enjoyed it!
Robert
Excellent recipe! Thank you!
christieathome
Thanks so much for making my recipe! Glad you enjoyed it!
Heidi | The Frugal Girls
The sweet and savory elements of your sauce compliment the steak so perfectly. This is one dish that would make all of the men in my life very happy!!
Katherine | Love In My Oven
Flank steak is so great, isn't it?! This looks super flavorful, Christie! And tomato is always a hit with my family. We'd enjoy this!