Prep the aromatics: Trim lemongrass, remove the tough outer layer, and smash the stalks with the back of a knife.
Slice galangal or ginger. Tear the kaffir lime leaves. Slice the chiles and shallots.
Build the base: In a medium pot, warm a little oil over medium heat.
Add shallots and a pinch of salt. Cook 2–3 minutes until fragrant. Stir in curry paste and sliced chiles, and cook 30–60 seconds to bloom the flavors.
Add broth and aromatics: Pour in the broth.
Add lemongrass, galangal, and kaffir lime leaves. Simmer gently for 10 minutes to infuse.
Stir in coconut milk: Reduce heat to medium-low. Add coconut milk and mushrooms.
Simmer another 5 minutes. Keep it just below a boil to prevent curdling.
Cook the protein: Add thinly sliced chicken or tofu. If using shrimp, add it later since it cooks fast.
Simmer until the protein is just cooked through—about 3–5 minutes for chicken, 2–3 minutes for shrimp, 4–5 minutes for tofu to warm through.
Season: Add fish sauce, sugar, and lime juice. Taste and adjust. You’re aiming for a balance of salty, sour, spicy, and creamy.
Add cherry tomatoes now if using and simmer 1–2 minutes until just softened.
Finish and serve: Remove lemongrass stalks, galangal slices, and lime leaves. Ladle into bowls. Top with chopped cilantro and Thai basil.
Serve with steamed rice or over rice noodles, plus lime wedges.