Go Back
+ servings
Phở in a bowl.
Print Recipe
5 from 1 vote

Phở (Vietnamese Beef Noodle Soup)

Learn how to make authentic Phở from scratch to serve with your favorite toppings and herbs - just like how it is from your favorite restaurant!
Prep Time4 hrs
Cook Time5 hrs
Total Time9 hrs
Course: Breakfast, Dinner, Lunch, Main Course
Cuisine: Asian, Vietnamese
Servings: 10
Calories: 2977kcal
Author: Jeannette


  • cheesecloth/spice bag
  • ice bath


For The Broth

  • 8.4 L / 35.5 US cup water
  • 1 kg / 2.2 lb brisket (or to preference)
  • 1 kg / 2.2 lb oxtail (ask the butcher to cut it into segments)
  • 5 kg / 11 lb beef bones
  • 5 brown onions
  • 1 red onion
  • 90 g / 0.2 lb ginger
  • 6 scallions/spring onions (tied into a knot)
  • 100 g / 0.22 lb dried shrimp (we get it from the Asian supermarket)
  • 2 tbsp coriander seed
  • 3 star anise
  • 2 Chinese cinnamon bark
  • 1 cardamom
  • 1/2 tbsp clove

For The Broth Seasoning

  • 1/2 US cup fish sauce (or to taste)
  • 2 1/4 tbsp sugar (or to taste)
  • 2 tbsp salt (or to taste; plus more to clean the offal)
  • 2 tbsp chicken bouillon powder (or to taste)

For The Toppings

  • 600 g / 1.3 lb bible tripe (or to preference)
  • 600 g / 1.3 lb beef tendon (or to preference)
  • 1 kg / 2.2 lb eye fillet steak (or to preference)
  • 600 g / 1.3 lb beef balls (we get them from the Asian grocery store)

For The Garnish And Noodles

  • 2 kg / 4.4 lb rice noodles (roughly 2 bags)
  • bean sprouts
  • Thai basil
  • onion (thinly sliced)
  • chili
  • scallion/spring onion
  • scallion/spring onion whites (the whiter part of the scallion/spring onion)
  • coriander
  • lemon wedges
  • hoisin sauce
  • Sriracha


Preparing The Bones

  • Rinse, then soak the oxtail, brisket and beef bones in cold water with 1 tbsp salt for 1 hour. Replace the water with a clean batch another 3 times every hour following.
    Note: At home, we divide the batches into separate bowls to fit everything and also divide the salt content equally among all three. When you renew the water, also add the same amount of salt each time.
  • Drain, then fill a large pot with water and bring to a boil. The water needs to cover all the bones.
  • Add the bones and brisket in and bring it back to a boil. As soon as it starts to boil, pour all the contents out, wash the pot and refill with 8.4L (35.5 US cup) water.
  • Put the pot back on high heat to come to a boil while you wash the bones and brisket. Wash off any scum or impurities, then put them back into the water when boiling.
  • Let it come to a boil before turning the heat down to medium.

Cooking The Aromatics

  • Put the star anise, Chinese cinnamon bark, cloves, coriander seeds, cardamom and dried shrimp in a small pan. Toast over low-medium heat for 5 minutes or until fragrant.
    Let the contents cool while you work on the other Phở ingredients.
  • Char the stock onions and ginger until blackened, then run under cool water to remove the black parts. You may need to peel some onion layers off.
    Pro Tip: Use a small knife to scrape the ginger's skin to remove the darkened areas.
  • Alternatively, remove the skin of the onions and ginger, then dry toast it on low-medium heat in a pan for 5 minutes or until just starting to develop black bits.
    When done, add them into the Phở stock.
  • Pour the cooled toasted aromatics into a cheesecloth or spice bag, then tie it tightly.
    Note: We used a coffee mesh strainer that had a handle, so we simply cut it from the metal handle and used the bag itself.

Making The Broth

  • Add the spice bag into the pot along with the scallion/spring onion knot. As the broth simmers, remember to skim the floating scum from the top every 30 minutes.
  • After 1 hour, season with the fish sauce, chicken bouillon powder, salt and sugar.
  • Ten minutes after adding the seasoning, take the brisket out and place into an ice bath for 10 minutes. This will slow down the cooking process and stop it from overcooking. When cool, thinly slice and let aside to use as a topping.
  • Scrub 3 tbsp salt through the bible tripe and tendons, then rinse clean. Repeat once more.
  • Add them into the broth to cook. Take the tripe out after 15 minutes or when just cooked. Let the tendon cook for a total of 3 hours or until soft in the Phở broth.
  • When cool, thinly slice and let aside to use as a topping.
    Note: If the brisket is still tough when you poke through it using a chopstick, let it simmer for another hour or until just beginning to soften.
  • After another 2 hours, take the oxtail out and set aside to use as a topping. You can also scoop the onions out of the Phở broth at this point to prevent them from breaking and making the soup murky.
    Note: Oxtail will take about 3 hours to cook, so test its texture at the 2 hour mark. Leave it to simmer for longer if needed or remove immediately when soft.
  • Add the meatballs into the broth to heat up. Use scissors to cut the tripe into thin slices along the thicker part.
  • Once the tendons have been cooking for 3 hours or until soft, scoop them out and cut them into smaller segments, roughly 3cm (1.2") long. Set the tripe and tendons aside to add as a topping.

How To Serve

  • Make sure the Phở soup is boiling just before serving so it can cook the rare beef slices.
  • Bring a small pot of water to a boil and quickly blanch the noodles. If you're using the dried version, let it cook in a pot of boiling water for 10 minutes or until al dente.
  • Drain the noodles and pour into a serving bowl. Add the meatballs, brisket, oxtail, tripe and tendon. Lay the rare beef slices on top and pour hot soup directly over the uncooked meat to cook it.
    Note: The beef slices are best served medium rare, but if you prefer it more cooked then let it cook in the pot for a little longer.
  • Serve the Phở garnished with bean sprouts, Thai basil, slice onions, coriander, scallions and scallion whites.
  • Accompany the bowl with a sauce dish of Sa Tế (Vietnamese Lemongrass Chili Sauce), hoisin and Sriracha!


  • Ask the butcher to slice the meat topping for you. They often have machines that can do it thinly and each slice will come out with a consistent thickness. Alternatively, semi-freeze the beef (roughly 20 minutes) so it's easier to slice.
  • Avoid overcooking the beef. Simmering the bones for hours will release tons of flavor in the Phở broth, but for any beef toppings it's best to cook them until just right otherwise they will fall apart as you eat.
  • Cook the soup low and slow. This will help to keep the broth clear with a clean taste. For extra flavor, cook the base stock the night before and bring it back to a simmer the next day for a few more hours.
  • Use a variety of bones. Marrow and knuckle bones will give different layers of beefy essence.
  • Keep the noodles al dente. Microwave the Phở noodles for 30 seconds, then blanch quickly.
  • Make each serving as you go. Whenever someone is ready to eat a bowl of Phở, cook their noodles and serve fresh instead of cooking all the noodles at once and letting them sit.
  • You can either buy whole dried spices from Asian supermarkets like we did and use what you need then store the leftovers for future recipes or get pre-prepared Phở spice bags with all the necessary spices in there already.
  • This recipe uses chicken bouillon powder as a flavor enhancer but you can also use beef bouillon or stock cubes instead.
  • For toppings, we use oxtail, brisket, homemade beef balls, bible tripe, tendons and eye fillet for the rare beef slices. You can use all of these or any of your choice.
  • The rare beef can be substituted with sirloin, flank steak, chuck roast, wagyu or tenderloin.
  • We buy fresh Phở rice noodles from our local Asian grocery store. They also come dried in packets and in varying thicknesses.


Calories: 2977kcal | Carbohydrates: 347g | Protein: 204g | Fat: 78g | Saturated Fat: 29g | Polyunsaturated Fat: 3g | Monounsaturated Fat: 34g | Cholesterol: 580mg | Sodium: 3414mg | Potassium: 1496mg | Fiber: 9g | Sugar: 6g | Vitamin A: 106IU | Vitamin C: 7mg | Calcium: 243mg | Iron: 19mg