Prep the noodles: Soak rice noodles in warm water until pliable (about 10 minutes), then drain. If using wheat noodles, cook until just shy of al dente and rinse briefly to prevent sticking.
Sauté aromatics: Heat oil in a large pot over medium heat.
Add onion and cook 3–4 minutes until softened. Stir in garlic and ginger for 30 seconds until fragrant.
Bloom the curry paste: Add red curry paste and cook for 1 minute, stirring, to release its flavors. If using lemongrass or kaffir lime leaves, add them now.
Add liquids: Pour in broth and bring to a gentle simmer.
Stir in coconut milk and return to a light simmer—do not boil vigorously to keep the coconut milk silky.
Cook the protein: Add chicken, shrimp, or tofu. Simmer until cooked through—about 5–6 minutes for thin chicken slices, 3–4 minutes for shrimp, or 4–5 minutes for tofu to warm through.
Add vegetables: Stir in bell pepper and mushrooms. Cook 3–4 minutes until just tender.
Add spinach or bok choy for the last minute to wilt.
Season the broth: Add fish sauce or soy sauce, lime juice, and a touch of sugar. Taste and adjust—add more lime for brightness, fish/soy sauce for savoriness, or sugar to balance.
Combine with noodles: Add drained noodles to the pot and simmer 1 minute to warm through. If the soup is too thick, splash in extra broth or water.
Finish and serve: Remove lemongrass and lime leaves if used.
Ladle into bowls and top with cilantro, green onions, bean sprouts, chili oil, and peanuts. Serve with lime wedges.