For the red curry paste: In a food processor, combine the cilantro, oil, ginger, lemongrass, coriander, cumin, shrimp paste, garlic, red chiles, lime leaf, 1 teaspoon salt and 1 teaspoon pepper. Pulse to a consistent paste.
For the curry: Heat 2 tablespoons of the oil in a large Dutch oven over medium heat. Add the curry paste and cook, stirring well, until aromatic, about 2 minutes. Transfer to a bowl and set aside. Add the remaining 2 tablespoons oil to the pot and increase the heat to high. Sprinkle the flank steak with a pinch of salt, then add it to the pot; cook for 3 to 4 minutes. Remove the steak and add the onions and peppers; cook until tender, 2 to 3 minutes. Add the coconut milk, bring to a gentle boil, then add the curry paste back to the pot; stir well. Reduce the heat and simmer for about 15 minutes. (If the coconut milk breaks and separates, don't worry: it will come back together to a smooth consistency.) Add the chicken broth and fish sauce, and continue simmering until the sauce has a nice, gravy-like consistency, 12 to 15 minutes. Return the beef to the pot and finish with the cilantro, basil, mint and lime juice. Taste and adjust the seasoning.
Sri Lankan lime leaves can be purchased online or in Asian food markets. If they cannot be sourced, a good substitute can be made from a combination of bay leaves, lime zest and lemon thyme. One small bay leaf, 1/4 teaspoon lime zest and 1/4 teaspoon lemon thyme is the equivalent of one Sri Lankan lime leaf.