Heat oil (in a skillet large enough to hold the fish) over medium heat. Add the shallots and cook for 10 minutes, stirring occasionally, until they soften (lower the heat if they start to brown) Transfer them to a small bowl and set aside.
Add sugar, fish sauce, and water to the skillet. Over medium heat, cook the mixture for about 5 minutes, until it starts to turn brown and there are large bubbles throughout. Sprinkle in the pepper and the cooked shallots and cook for a minute more. Add the fish and cook, turning gently with a spatula every three minutes or so, until it is coated evenly with thickened caramel sauce, and just cooked through, 8-10 minutes. (you can add a few tablespoons of water, 1 tablespoon at a time, if the pan seems too dry).
Sprinkle with scallions and cilantro. Serve with steamed rice and a simple green vegetable.