In a saucepan, combine the sugar and water. Cook over medium heat, stirring occasionally, until the sugar caramelizes into a dark golden brown color. Divide the caramel among ramekins, swirling to coat the bottoms evenly.
In a separate pot, combine the milk, evaporated milk (or heavy cream), and cardamom pods (if using). Heat the mixture over medium heat, stirring constantly, until the sugar has dissolved and the milk is hot. Be sure to stir continuously to prevent the milk from burning at the bottom of the pot.
Once the milk mixture begins to foam around the edges, remove it from the heat. Do not let it boil.
In a mixing bowl, lightly beat the eggs. Gradually whisk in the hot milk mixture, stirring continuously to temper the eggs.
If using vanilla essence instead of cardamom pods, add it to the mixture at this stage.
Strain the custard mixture through a fine sieve to remove any bits of egg or cardamom pods.
Pour the strained custard mixture into the prepared ramekins over the caramelized sugar.
Preheat the oven to 350°F (175°C). Place the filled ramekins in a large baking dish and carefully pour hot water into the baking dish until it reaches halfway up the sides of the ramekins, creating a water bath.
Bake the creme caramel in the preheated oven for about 40 minutes, or until the custard is set around the edges but still slightly jiggly in the center.
Remove the ramekins from the oven and from the water bath. Allow them to cool to room temperature, then refrigerate until completely chilled and set.
To serve, run a thin-bladed knife around the edge of each ramekin to loosen the creme caramel. Invert the ramekins onto serving plates to unmold the desserts, allowing the caramel sauce to flow over the custard.
Serve the creme caramel chilled and enjoy the creamy, caramel-infused goodness with every spoonful.