Quick Recipe Version (TL;DR)
Quick Ingredients
- 14 oz (400 g) firm or extra-firm tofu, pressed
- 1 cup uncooked jasmine rice (makes about 3 cups cooked)
- 2 tbsp neutral oil, divided
- 6 garlic cloves, minced
- 4–6 Thai bird’s eye chilies, minced (or 1–2 serranos)
- 1 small shallot, finely chopped
- 6 oz (170 g) green beans, cut into 1/2-inch pieces
- 2 cups holy basil leaves (lightly packed)
- Sauce: 2 tbsp light soy sauce, 1 tbsp dark soy sauce, 1 tbsp oyster or mushroom stir-fry sauce, 2 tsp fish sauce (or vegan fish sauce), 2 tsp brown or palm sugar, 2 tbsp water, 1/8 tsp white pepper
- Optional: 4 eggs for fried eggs
Do This
- 1. Cook rice: Rinse 1 cup rice; simmer with 1 1/4 cups water, covered, 12 minutes; rest 10 minutes.
- 2. Mix sauce: Stir all sauce ingredients in a small bowl until sugar dissolves.
- 3. Prep: Press tofu 10 minutes; crumble or 1/2-inch cube. Chop garlic, chilies, shallot; trim and cut beans.
- 4. Beans: Heat 1 tbsp oil in a hot wok/skillet; blister beans 2–3 minutes. Remove.
- 5. Tofu: Add 1 tbsp oil; sear tofu on high 3–4 minutes until browned. Add shallot 30 seconds; add garlic and chilies 30–60 seconds.
- 6. Sauce and basil: Return beans; pour in sauce; toss 30–60 seconds. Off heat, fold in basil to wilt. Serve over rice; top with fried egg if using.
Why You’ll Love This Recipe
- Fast weeknight stir-fry with big Thai street-food flavor in under 30 minutes.
- Tofu turns deeply savory and crisp-edged, soaking up a glossy soy-based sauce.
- Fresh holy basil adds a peppery, anise-kissed finish that tastes like the real deal.
- Easy to customize heat level and protein, with a jammy fried egg as a luxurious topper.
Grocery List
- Produce: Garlic, Thai chilies (or serranos/jalapeños), shallot, green beans, holy basil (or Thai basil), lime (optional)
- Dairy: Eggs (optional)
- Pantry: Firm tofu, jasmine rice, neutral oil, light soy sauce, dark soy sauce, oyster sauce or mushroom stir-fry sauce, fish sauce (or vegan fish sauce), brown or palm sugar, white pepper, salt
Full Ingredients
Stir-Fry Sauce
- 2 tbsp light soy sauce
- 1 tbsp dark soy sauce (for color and depth)
- 1 tbsp oyster sauce or mushroom stir-fry sauce (vegetarian)
- 2 tsp fish sauce (or vegan fish sauce)
- 2 tsp brown sugar or palm sugar
- 2 tbsp water
- 1/8 tsp ground white pepper
Tofu and Veggies
- 14 oz (400 g) firm or extra-firm tofu, pressed 10 minutes
- 2 tbsp neutral oil (such as canola, peanut, or avocado), divided
- 6 garlic cloves, minced (about 2 tbsp)
- 4–6 Thai bird’s eye chilies, minced (seeded for milder heat), or 1–2 serranos
- 1 small shallot, finely chopped
- 6 oz (170 g) green beans, trimmed and cut into 1/2-inch pieces
- 2 cups lightly packed holy basil leaves (about 40–50 leaves)
For Serving
- 1 cup uncooked jasmine rice (yields about 3 cups cooked)
- Lime wedges (optional)
Jammy Fried Eggs (Optional)
- 4 large eggs
- 1/3 cup neutral oil (enough for about 1/4-inch depth in a small skillet)
- Pinch of salt

Step-by-Step Instructions
Step 1: Cook the jasmine rice
Rinse 1 cup jasmine rice under cool water until it runs mostly clear. Combine rice with 1 1/4 cups water and a pinch of salt in a small saucepan. Bring to a gentle boil, cover, reduce heat to low, and simmer for 12 minutes. Remove from heat, keep covered, and rest 10 minutes. Fluff before serving.
Step 2: Press and prepare the tofu
Drain the tofu and wrap it in a clean kitchen towel. Set a plate and something light on top (such as a skillet) and press for 10 minutes to remove excess moisture. Crumble the tofu into bite-sized pieces with your hands for a saucy texture, or cut into 1/2-inch cubes if you want cleaner edges.
Step 3: Mix the sauce
In a small bowl, whisk together light soy sauce, dark soy sauce, oyster or mushroom sauce, fish sauce (or vegan fish sauce), brown or palm sugar, water, and white pepper until the sugar dissolves. Set near the stove.
Step 4: Prep aromatics and beans
Mince the garlic and chilies (seed the chilies to reduce heat). Finely chop the shallot. Trim the green beans and cut into 1/2-inch pieces. Pick the holy basil leaves and have them ready; they go in at the end.
Step 5: Blister the green beans
Heat a wok or large skillet over high heat until very hot. Add 1 tbsp oil and swirl. Add green beans and stir-fry 2–3 minutes until bright green with light blistering and crisp-tender. Transfer to a plate.
Step 6: Brown the tofu hard and build flavor
Return the pan to high heat. Add the remaining 1 tbsp oil, then add the tofu in an even layer. Sear undisturbed for 2 minutes, then stir and continue cooking 1–2 minutes more until golden-browned in spots. Add the shallot and cook 30 seconds. Add garlic and chilies and stir-fry 30–60 seconds until very fragrant (avoid burning).
Step 7: Sauce, basil, and finish
Return the green beans to the pan. Pour in the sauce and toss vigorously 30–60 seconds until the tofu is evenly coated and glossy. If it looks too dry, splash in 1–2 tbsp water. Turn off the heat and immediately fold in the holy basil leaves so they just wilt—about 20–30 seconds. Taste and adjust: a few drops more fish sauce for salt, or a pinch of sugar for balance.
Step 8: Optional jammy fried eggs and assemble
For Thai-style fried eggs, heat 1/4-inch depth of oil in a small skillet over medium-high until shimmering (about 350°F/175°C if using a thermometer). Crack in an egg and cook 1:45–2:15 minutes, basting with hot oil, until the edges are lacy and crisp and the yolk is jammy. Season with a pinch of salt. Repeat with remaining eggs. To serve, mound rice in bowls, spoon the basil tofu on top, and crown each bowl with a fried egg. Add lime wedges if you like.
Pro Tips
- Holy basil is the signature flavor. If you can’t find it, use Thai basil and reduce to 1 1/2 cups to avoid overpowering anise notes.
- High heat is key. Preheat your wok or skillet thoroughly for good sear and wok hei. Avoid overcrowding so tofu browns, not steams.
- Control the heat level by seeding chilies or swapping in serranos or jalapeños. Add one minced red Fresno for color without too much heat.
- Crumbled tofu soaks up more sauce; cubed tofu gives a neater look. Either way, pressing the tofu first boosts browning.
- Season at the end: a tiny splash of fish sauce brightens; a pinch of sugar rounds out salt and heat.
Variations
- Chicken or pork: Replace tofu with 1 lb (450 g) ground chicken or pork. Stir-fry 5–6 minutes until cooked through before adding aromatics.
- Fully vegan: Use mushroom stir-fry sauce and vegan fish sauce (or add 1 tsp extra light soy plus 1 tsp lime juice). Skip the fried egg or top with crispy shallots.
- Extra veg: Add sliced bell pepper or mushrooms with the beans, or swap green beans for chopped Chinese long beans.
Storage & Make-Ahead
Stir-fry sauce can be mixed up to 1 week ahead and refrigerated. Leftover basil tofu keeps 3 days in an airtight container; reheat in a hot skillet with a splash of water. Cooked rice keeps 4 days refrigerated; reheat covered in the microwave with a damp towel. Fry eggs fresh for best texture.
Nutrition (per serving)
Approximate, with 3/4 cup cooked rice: 440 calories, 20 g protein, 15 g fat, 55 g carbs, 5 g fiber, 1,250 mg sodium. Add about 90 calories and 6 g protein if topping with a fried egg.

