Rinse the shrimp and dry them on paper towels. Season with salt and pepper.
Set a 4-quart Dutch oven (or a pot) over high heat. Add oil and sear the shrimp for about a minute on each side. Transfer them to a plate.
Lower to medium heat and add a little oil. Sauté garlic and shallots until slightly softened, about 30 seconds.
Add 2 tablespoons of curry paste; use less if you want it less spicy. Bloom it by sautéing for about a minute to release the flavors, being careful not to burn them.
Add coconut milk, ¼ cup of water, kaffir lime leaves (if using), fish sauce, sugar, and salt. Mix and let it simmer. Taste and adjust as needed.
Add eggplant and partially cook it for about 2 minutes.
Add red bell pepper and asparagus. Mix them and cook for about 2 more minutes, until the eggplant is soft and the asparagus is tender-crisp.
Bring the shrimp back.
Gently mix in Thai basil leaves. Turn off the heat.
Video
Notes
Shrimp: Use large shrimp as they are less likely to overcook. You can also use boneless chicken, pork, fish balls, or go meatless with tofu or chickpeas.
Thai green curry paste: Not all curry pastes are the same; go with Thai brands like Maesri, Mae Ploy, or Aroy-D. You will need about 2 tablespoons, depending on how spicy you like. You can freeze the rest for months on end.
Coconut milk: Use full-fat coconut milk or coconut cream (without sugar) for a richer, creamier sauce. Avoid watered-down "light" coconut milk.
Makrut or Kaffir lime leaves: An optional ingredient already present in the curry paste. It's not easy to find, but it adds a wonderful aroma.
Vegetables: You can also use snow peas, zucchini, squash, chayote, cauliflower, broccoli, bamboo shoots, green or yardlong beans, and baby corn. If you like mushrooms, sear them on high heat to brown them and cook out all the liquid before adding them to the curry.
Thai basil leaves: A great way to add freshness and make it more authentic is to add fresh Thai basil leaves. It tastes similar to Italian basil or sweet basil with anise or licorice-like flavor.