This vegan pho is made with pan fried tofu, rice noodles, broccoli, and baby bok choy in a rich broth flavored with garlic, ginger, and whole spices. Serve topped with Thai basil, bean sprouts, and jalapeños with sriracha and hoisin sauce. Don't be intimidated by the long ingredient list—it's no more difficult to make than vegetable soup!
This post is sponsored by EZ Tofu Press.
Pho is a Vietnamese noodle soup made with thin rice noodles, a protein, and veggies in a umami-rich broth seasoned with a blend of 5 whole spices: star anise, cinnamon sticks, cardamom, coriander, and cloves. The soup is served with an array of garnishes and sauces from Thai basil and bean sprouts to lime juice and sriracha. It’s a popular dish in Vietnamese households, as street food, and in restaurants around the world.
Pho is all about the broth, but when it’s combined with all the other components, there is a full spectrum of flavor, color, and texture in every bite. The rest of the ingredients have little to no seasoning, relying on the rich broth to soak up flavor and the garnishes to bring levity to the flavor profile.
Traditionally, pho is a very meat-centric dish, relying on simmering beef for hours to create the base flavor in the broth. For a dish where the broth is front and center, it can be challenging to create a vegan pho broth that delivers those layers of flavor.
Simple vegetable broths or mushroom broths sometimes feel like they’re missing that savory note, while using seasoning mixes and bouillon can be overly salty and taste artificial. As with most things, a little from column A and a little from column B is the winning combination.
This vegan pho broth utilizes techniques from homemade vegetable broth with simmered onions and garlic, but also calls for umami-rich ingredients like vegan mushroom-based oyster sauce and vegan fish sauce to round out the flavor. While I can’t claim that it’s authentic, it’s certainly delicious! Don’t forget the 5 essential spices—fresh, of course!
The protein used in this recipe is tofu, prepared to perfection with the EZ Tofu Press, a delicious marinade, and a tried and true pan frying technique!
The ingredient list for this recipe is a long one, but if you’re an avid cook, you’ll likely have many of these ingredients on hand.
For the remaining ingredients, I highly recommend purchasing these ingredients at an Asian market. You’ll be able to find most or all of them in one place for significantly cheaper than a supermarket. I noted substitutions for some of the ingredients in case you can’t find them.
- Fresh ginger root
- Vegetable oil
- Whole spices (star anise, cinnamon sticks, cardamom pods, cloves, coriander seeds)
- Vegan “beef” broth
- Soy sauce
- Nutritional yeast
- Vegan fish sauce
- Vegan oyster sauce
- Baby bok choy
- Thin rice noodles
- Raw bean sprouts
- Thai basil
- Fresh lime
- Green onions
- Hoisin sauce
Pho is all about the flavor of the broth, so it’s important that your spices are fresh for maximum flavor! While you can find all of the spices at a supermarket, you’ll pay 5-10x more than if you purchase the spices at an Asian or other international market. I was able to find large bags or containers of each spice for this recipe, as well as small packets for $1-2 so you can choose which ones to buy according to your cooking needs and budget.
A little goes a long way with the whole spices. Avoid adding extra unless you want your pho to taste like pumpkin pie!
Substitutions: I recommend using all whole spices when possible, but if you are missing one or two, you can replace some of the whole spices with ground. Check out this guide from Epicurious about how to calculate quantities of ground spices vs whole.
Vegan “Beef” Broth
Pho is all about layering flavors, and the type of broth or stock you start with is important! This recipe calls for vegan “beef” broth, which you can buy ready to use in a carton, as a bouillon that needs to be reconstituted, or even make it yourself from vegetables, mushrooms, and seasonings!
Substitutions: You can replace the vegan “beef” broth with vegetable broth or vegan “chicken” broth, but you may have to adjust the flavors since they may not be as potent as the vegan “beef” broth.
Nutritional yeast, or “nooch”, is the third layer of umami flavor (with the first being vegan “beef” broth and the second the onions and garlic). If you’ve ever tasted a soup and thought it wasn’t quite savory enough, a little bit of nutritional yeast will do the trick!
Nutritional yeast is a deactivated yeast rich in B vitamins. It’s often used to add a nutty, cheesy flavor to vegan dishes and was THE vegan cheese back in the day, before there was a wide variety of homemade vegan cheeses and delicious vegan cheese on the market! Nowadays, I reach for it most in small quantities as a seasoning. Though I love me some popcorn topped with nooch!
Substitutions: Nutritional yeast is quite easy to find at most well-stocked grocery stores, but if you don’t have it or can’t find it, you can replace the 2 tablespoons of nutritional yeast in the vegan pho broth with 1 teaspoon miso.
Vegan Fish Sauce
Fish sauce is used liberally in Vietnamese and Thai cuisine because it packs a punch of flavor. Vegan fish sauce is made with pineapple extract and has a unique sweet and salty flavor that’s hard to explain.
Substitutions: Nothing quite replicates vegan fish sauce exactly, but Worcestershire sauce comes close (be sure to use vegan Worcestershire sauce without anchovies!). Soy sauce is okay in a pinch.
Vegan Oyster Sauce
Once you have your beautifully layered umami-rich broth from the vegan “beef broth”, onions, garlic, soy sauce, nutritional yeast, and vegan fish sauce, vegan oyster sauce comes in and seals the deal. If “savory” were an ingredient, vegan oyster sauce is it.
Vegan oyster sauce is made from mushroom extracts, sugar, salt, and caramel coloring. It’s extremely rich, salty, and viscous. A little goes a long way! It’s also a key ingredient in Vegan Pad See Ew.
Substitutions: The closest substitution for vegan oyster sauce is hoisin sauce, which has a similar flavor and consistency. Pho is typically served with sriracha and hoisin sauce on the side, so this recipe calls for hoisin sauce as well.
Baby Bok Choy
Bok choy is a type of Chinese cabbage with a milder flavor, tender texture, and leafy greens. Baby bok choy is quite simply regular bok choy harvested at an earlier point in its growing cycle.
Substitutions: You can replace baby bok choy with another leafy green veggie like regular bok choy, swiss chard, celery, or cabbage.
Thai basil is a type of basil with a peppery, anise-like flavor. It’s eaten both raw and cooked, as in stir fries. Each bowl of pho is served with an individual plate of garnishes which includes Thai basil.
Substitutions: You can replace Thai basil with Italian basil if necessary.
Pho is not spicy, so it’s traditionally served with sriracha on the side for additional flavor and some spice!
Substitutions: Sriracha is very easy to find in most grocery stores, but if you don’t like it or want to use something you already have on hand, you can replace the sriracha with chili garlic sauce (the kind in a jar with chili flakes) or your favorite hot sauce.
Hoisin sauce is served with pho alongside sriracha. Hoisin sauce is a sweet, lightly savory, and salty caramel colored sauce used as a condiment and cooking sauce in Vietnamese cooking.
Substitutions: Since hoisin sauce is served on the side of pho and not an ingredient in the soup, I don’t recommend replacing it if you don’t have it.
- Large Stock Pot
- Cast Iron Pan or Other Frying Pan
- EZ Tofu Press
Large Stock Pot
Make sure you’re using a large stock pot that can hold 12 cups of broth plus ingredients.
Cast Iron Pan
A hot, well-seasoned cast iron pan or wok is great for getting perfect crispy edges on your tofu. Learn more about pan frying your tofu here!
EZ Tofu Press
The first step to any tofu recipe is pressing it to achieve a dense texture and absorb the flavors of your marinade. My secret to perfectly pressed tofu in 15 minutes or less is the EZ Tofu Press!
The EZ Tofu Press works by applying even pressure to both sides of a block of tofu, squeezing out the water without breaking apart the tofu or mess. Because of its simple, intuitive construction, the EZ Tofu Press is durable and easy to clean.
To press your tofu, place it between the two plates and turn the tension knobs to hold it in place. Slowly turn the knobs, checking every 5 minutes, until much of the water has been pressed out and the tofu has reduced in size, about 10-15 minutes. Then, proceed with the recipe.
Get your own EZ Tofu Press!
For the broth:
Peel and chop the onion into quarters, cut the ginger into 1 inch pieces, and crush the garlic cloves with the edge of a chef’s knife.
Heat the vegetable oil in a large stock pot over medium heat.
Add the onions, ginger, and garlic, and let pan fry until golden, 8-10 minutes.
Add the star anise, cinnamon sticks, cardamom pods, cloves, and continue pan frying until fragrant, 2-3 minutes more.
Add the water, vegan “beef” broth, soy sauce, and nutritional yeast and stir. It will look like a lot of broth, but much of the liquid will be absorbed by the ingredients and evaporate as the broth cooks.
Bring to a boil, then reduce to a simmer and let simmer for 1-2 hours, depending on how much time you have, until the broth is flavorful.
Strain the ingredients out of the broth so only the liquid remains. Discard the ingredients or save for another recipe (see notes for ideas).
Once the broth has been strained, add the vegan oyster sauce, vegan fish sauce, and sugar. Taste and adjust flavors. Add more salt if desired, or dilute with water if you find the flavors too strong.
For the tofu:
While the broth is simmering, press the tofu with a tofu press (EZ Tofu Press recommended) for 10-15 minutes, until the tofu has reduced in size and much of the water has been pressed out.
Slice the tofu into cubes or your preferred shape.
Combine the vegan “beef” broth, soy sauce, ginger, and garlic in a shallow dish and add the tofu cubes. Marinate for at least 30 minutes.
Heat the vegetable oil in a cast iron pan or other pan over medium heat.
Drain the tofu from the marinade, then add to the pan and pan fry until golden and crisp on all sides, 8-10 minutes.
Remove from heat, then transfer to a plate and set aside until ready to serve.
To prepare the soup:
Add the broccoli and baby bok choy to broth and simmer until almost tender, 5-6 minutes. They will continue to soften in the hot broth.
Bring a separate pot of water to a boil and boil the rice noodles according to package directions, until al dente. You can also cook them directly in the pot of broth if preferred (see notes).
Prepare the garnishes. For each serving, place ½ cup bean sprouts, 1 sprig Thai basil, 1 lime wedge, and a few slices of jalapeño on a small plate and serve alongside the bowl of soup.
To prepare each bowl of soup, place ¼ of the cooked rice noodles in the bottom of the bowl, then top with desired amount of broth and vegetables.
Divide the tofu pieces amongst the bowls. Sprinkle green onion slices and cilantro in each bowl.
Serve immediately with plates of garnishes, as well as sriracha and hoisin sauce.
✔️ Recommended Steps
Don’t be scared by the number of ingredients and steps in this recipe. Once all of the ingredients are prepped and chopped, there is a lot of downtime, just like with any soup recipe!
Here is my recommended process to maximize downtime and go through all the steps within 2 hours:
- Get the broth prepared and on the stove. You can even do this a day ahead, store the broth (with the onions and spices still in it) in the refrigerator overnight and pick up with the recipe when you’re ready.
- Press and marinate the tofu while the broth simmers. The active tofu steps (pressing, slicing, preparing the marinade) will take about 20 minutes, then it will need to marinate for 30-60 minutes. Prepare the tofu marinade while the EZ Tofu Press is doing its job.
- Wash and chop the veggies and garnishes while the tofu is marinating and the broth continues to simmer. Chop the broccoli into florets and slice the baby bok choy, then place in a bowl and set aside until ready to use. Wash and prepare the bean sprouts, Thai basil, jalapeños, lime, cilantro, and green onions.
- Prepare the garnish plates with Thai basil, jalapeño slices, and bean sprouts and set aside or refrigerate until ready to serve. At this point, the broth will have been simmering for 1 hour and the tofu marinating for 30 minutes.
- Pan fry the tofu and start boiling a pot of water for the rice noodles (if cooking separately from the broth). I like to wait to strain the broth until the very last minute so it has a chance to absorb all the delicious flavors! I may also do some light kitchen cleanup at this point if I want the broth to cook longer.
- Boil the noodles and vegetables. While you are waiting, set your table, get out bowls, utensils, sauces, and plates of garnishes if you had put them in the fridge.
- Prepare each serving and enjoy!
🌱 Serving Suggestions
I like to make individual plates with all of the pho toppings and little bowls of sauces per serving, just like at restaurants! That way each person can add as many or as few toppings as they like.
Take out a small plate for each bowl of vegan pho and place a generous helping of Thai basil, a large handful of bean sprouts, a lime wedge, and a few slices of jalapeño.
Also give each person a pho spoon (also called a Chinese spoon or Japanese soup spoon, depending on the dish and the culture) and a set of chopsticks. Pho broth is eaten with the soup spoon and the vegetables, protein, and noodles are eaten with chopsticks.
It’s best to store leftovers of each component of the soup (broth with vegetables, noodles, cooked tofu, fresh garnishes) in a separate container, then combine and heat up when eating leftovers.
Leftover vegan pho is best eaten within 1 week, but the garnishes such as fresh Thai basil, bean sprouts, and green onions will not be as fresh after a few days. The broth will be more flavorful the other day as the flavors combine!
- Make sure to let the broth simmer for at least 1 hour, ideally 2 hours to absorb all of the flavors from the aromatics. To get as much flavor as possible and save on prep time, you could also make the broth a day ahead, store it in the refrigerator overnight WITH the ingredients still in the broth, then strain when ready to serve.
- While the broth calls for 12 cups of liquid between the broth and water, much of the liquid will evaporate as it simmers. The exact amount depends on how long you cook the broth, the size of the pot, and heat level of your stove. If you find the flavors to be too concentrated or salty, or are not left with enough broth, you can add some water back into the broth after straining. There is no exact instruction or measurement for this as it’s up to your personal tastes.
- You can cook the rice noodles separately or add them to the stock pot with the vegetables. If you are planning on having leftovers, it’s best to cook and store them separately so the noodles don’t overcook in the broth and to easily divide out portions of noodles.
- If you don’t want to throw away the broth ingredients, you can save them for another soup broth, to make a marinade, or compost them. You can also reuse the tofu marinade (I like to reuse tofu marinade for making my 10 Minute Wonton Noodle Soup).
Pho is pronounced like fuh, as in “fun” without the “n”. For English speakers, foe is a common (and understandable!) mispronunciation.
Traditional pho is made with beef and gets its flavor from boiling the meat, bones, and a spice blend including 5 spices: star anise, cinnamon, coriander, cardamom, and cloves. The broth is the most important component of pho since that’s where all the flavor is concentrated, so it’s important to make a broth with umami-rich ingredients.
This vegan version of pho gets its umami flavor from vegan oyster sauce, vegan fish sauce, soy sauce, onions, garlic, and nutritional yeast. And of course, the 5 spice blend! Other vegan and vegetarian pho recipes utilize mushrooms for a rich, earthy flavor. Try a few versions and see what you like best.
Typically, vegetarian pho is vegan, but it’s always best to check the recipe or with the restaurant. Pho usually does not contain any dairy or egg products, but there’s always a chance that it could be made with non-traditional ingredients, such as egg noodles instead of rice noodles. Also, confirm the definition of vegetarian and vegan. Some restaurants assume vegetarians will eat fish sauce or oyster sauce.
Yes, pho noodles are rice noodles, which are made with rice flour, water, and sometimes tapioca starch. I’ve never seen a non-vegan rice noodle, but you can always double check.
- 1 large onion
- 3 inch piece ginger, peeled
- 4 cloves garlic, peeled
- 2 tablespoons vegetable oil
- 3 star anise
- 2 cinnamon sticks
- 4 cardamom pods
- 3 whole cloves
- 2 teaspoons coriander seeds
- 6 cups water
- 6 cups vegan “beef” broth
- ¼ cup soy sauce
- 2 tablespoons nutritional yeast
- 1-2 tablespoons vegan oyster sauce
- 1 tablespoon vegan fish sauce
- 1 tablespoon sugar
- Salt to taste - add amount
- 1 pound tofu (1 block)
- 2 cups vegan “beef” broth
- ¼ cup soy sauce
- 2 teaspoons freshly grated ginger
- 1 clove garlic
- 2 tablespoons vegetable oil
Vegetables and Noodles:
- 1 medium head broccoli, cut into florets
- 4-6 baby bok choy, halved lengthwise
- 8 ounces thin rice noodles
- 2 cups raw bean sprouts
- 4 sprigs Thai basil
- 2-3 jalapeños, sliced
- 4 lime wedges
- 6-8 sprigs cilantro
- ½ cup sliced green onions
- Sriracha to taste
- Hoisin sauce to taste
For the broth:
- Peel and chop the onion into quarters, cut the ginger into 1 inch pieces, and crush the garlic cloves with the edge of a chef’s knife.
- Heat the vegetable oil in a large stock pot over medium heat.
- Add the onions, ginger, and garlic, and let pan fry until golden, 8-10 minutes.
- Add the star anise, cinnamon sticks, cardamom pods, cloves, and continue pan frying until fragrant, 2-3 minutes more.
- Add the water, vegan “beef” broth, soy sauce, and nutritional yeast and stir. It will look like a lot of broth, but much of the liquid will be absorbed by the ingredients and evaporate as the broth cooks.
- Bring to a boil, then reduce to a simmer and let simmer for 1-2 hours, depending on how much time you have, until the broth is flavorful.
- Strain the ingredients out of the broth so only the liquid remains. Discard the ingredients or save for another recipe (see notes for ideas).
- Once the broth has been strained, add the vegan oyster sauce, vegan fish sauce, and sugar. Taste and adjust flavors. Add more salt if desired, or dilute with water if you find the flavors too strong.
For the tofu:
- While the broth is simmering, press the tofu with a tofu press (EZ Tofu Press recommended) for 10-15 minutes, until the tofu has reduced in size and much of the water has been pressed out.
- Slice the tofu into cubes or your preferred shape.
- Combine the vegan “beef” broth, soy sauce, ginger, and garlic in a shallow dish and add the tofu cubes. Marinate for at least 30 minutes.
- Heat the vegetable oil in a cast iron pan or other pan over medium heat.
- Drain the tofu from the marinade, then add to the pan and pan fry until golden and crisp on all sides, 8-10 minutes.
- Remove from heat, then transfer to a plate and set aside until ready to serve.
To prepare the soup:
- Add the broccoli and baby bok choy to broth and simmer until almost tender, 5-6 minutes. They will continue to soften in the hot broth.
- Bring a separate pot of water to a boil and boil the rice noodles according to package directions, until al dente. You can also cook them directly in the pot of broth if preferred (see notes).
- Prepare the garnishes. For each serving, place ½ cup bean sprouts, 1 sprig Thai basil, 1 lime wedge, and a few slices of jalapeño on a small plate and serve alongside the bowl of soup.
- To prepare each bowl of soup, place ¼ of the cooked rice noodles in the bottom of the bowl, then top with desired amount of broth and vegetables. Divide the tofu pieces amongst the bowls. Sprinkle green onion slices and cilantro in each bowl.
- Serve immediately with plates of garnishes, as well as sriracha and hoisin sauce.
As an Amazon Associate and member of other affiliate programs, I earn from qualifying purchases.
Nutrition Information:Yield: 4 Serving Size: 1
Amount Per Serving: Calories: 474Total Fat: 22gSaturated Fat: 3gTrans Fat: 0gUnsaturated Fat: 18gCholesterol: 0mgSodium: 4000mgCarbohydrates: 49gFiber: 11gSugar: 13gProtein: 30g
All nutritional information presented within this site are intended for informational purposes only. I am not a certified nutritionist and any nutritional information on seitanbeatsyourmeat.com should only be used as a general guideline. This information is provided as a courtesy and there is no guarantee that the information will be completely accurate. Even though I try to provide accurate nutritional information to the best of my ability, these figures should still be considered estimates.