There is a moment, somewhere around the forty-fifth minute of stirring cajeta on the stove, when the kitchen fills with a smell so warm and caramel-sweet that you forget you were ever impatient. The goat milk slowly bronzes, thickens, and transforms into something the color of amber glass, with a depth of flavor that feels almost savory at its edges. Spooned over a trembling, ivory vanilla custard pudding and left to set in little glass jars, this dessert is the kind of thing you make once and then find yourself thinking about for weeks.
What sets this version apart is the cajeta itself. Instead of reaching for a store-bought substitute, we make it from scratch using fresh goat milk, piloncillo for a molasses-tinged complexity, and a cinnamon stick that slowly perfumes the entire pot. The pudding base is a classic stovetop custard thickened with egg yolks and cornstarch, which gives it a spoonable, velvety texture rather than the stiff, gelatinous quality of a boxed mix. A thin layer of cajeta is poured into each jar before the warm pudding goes in, so as it chills, the caramel settles beneath the custard like a hidden reward at the bottom of every spoonful.
This recipe sits comfortably in the medium difficulty range. The cajeta requires patience and attention, but there is no special equipment and no candy thermometer needed. It is a wonderful weekend baking project, beautiful for dinner parties served in individual glasses, and genuinely impressive for anyone who has never encountered this traditional Mexican sweet before. If you can stir a pot and watch a clock, you can make this.
6
servings
Ingredients
- Cajeta
- 1000 mlfresh whole goat milk (about 4 cups), divided
- 200 gpiloncillo, grated or finely chopped (about 1 cup packed), or dark brown sugar
- 1 wholecinnamon stick
- 0.25 tspbaking soda
- 0.5 tsppure vanilla extract
- Pudding
- 500 mlwhole cow’s milk (about 2 cups)
- 4 largeegg yolks, at room temperature
- 80 ggranulated sugar (about 6 tablespoons)
- 35 gcornstarch (about 4 tablespoons)
- —Pinch of fine sea salt
- 30 gunsalted butter (about 2 tablespoons), cold, cubed
- 1 tsppure vanilla extract
- Folding Into Finished Pudding
- 60 mlheavy cream (about 1/4 cup)
- Garnish (optional)
- 30 gtoasted pepitas or crushed Mexican wedding cookies
Ingredient Substitutions
Instructions
🔧 Equipment
- Make the cajeta first: Combine the goat milk, piloncillo, and cinnamon stick in a wide, heavy-bottomed saucepan (at least 3-quart capacity, as the mixture will foam up). Heat over medium, stirring frequently, until the piloncillo dissolves completely. Remove from heat, whisk in the baking soda (it will foam vigorously for a moment, which is normal), then return to medium-low heat.
- Cook the cajeta uncovered, stirring every 3 to 4 minutes to prevent scorching on the bottom, for 45 to 55 minutes. The mixture will gradually deepen from pale ivory to a rich amber-brown. It is ready when it coats the back of a spoon thickly and a line drawn through it holds for a few seconds. Remove the cinnamon stick, stir in the vanilla, and let it cool for 10 minutes. Spoon about 2 tablespoons of warm cajeta into the bottom of each of 6 serving glasses or jars. Set aside.
- Make the pudding: Whisk together the egg yolks, granulated sugar, cornstarch, and salt in a medium heatproof bowl until pale and smooth, about 2 minutes. Warm the whole cow’s milk in a medium saucepan over medium heat until steaming and small bubbles appear around the edges (do not boil). Very slowly, pour about 120ml of the hot milk into the egg mixture in a thin stream, whisking constantly. This tempers the eggs and prevents scrambling. Then pour the egg mixture back into the saucepan with the remaining hot milk.
- Cook the pudding mixture over medium heat, whisking constantly, until it thickens and begins to bubble, about 5 to 8 minutes. Once you see the first large bubbles break the surface, continue whisking for exactly 2 more minutes to fully cook the cornstarch and eliminate any raw, chalky flavor. Remove from heat.
- Immediately whisk in the cold cubed butter and vanilla extract until the butter is fully melted and incorporated. Let the pudding cool for 5 minutes, then fold in the heavy cream gently with a spatula for added silkiness. Pour the warm pudding evenly over the cajeta layer in each glass. Press a piece of plastic wrap directly onto the surface of each pudding to prevent a skin from forming. Refrigerate for at least 2 hours, or until fully set and cold.
- To serve, remove the plastic wrap. Drizzle a little extra cajeta over the top of each pudding and garnish with toasted pepitas or crushed cookies if desired. The pudding can be served cold or allowed to sit at room temperature for 10 minutes for a softer, creamier texture.
- Make the slow cooker cajeta: Combine the goat milk, piloncillo, and cinnamon stick in a 4-quart or larger slow cooker. Stir well. Mix the baking soda with 1 teaspoon of water and stir it into the milk mixture. Cook on High with the lid propped open slightly (using a wooden spoon laid across the rim) to allow moisture to escape. Stir thoroughly every 30 to 40 minutes.
- After 4 to 5 hours, the cajeta should be deep amber, thick, and reduced to roughly one-third of its original volume. If it is still quite liquid at 4 hours, increase heat and continue checking every 20 minutes. Remove the cinnamon stick, stir in vanilla, and allow to cool for 15 minutes. The cajeta will thicken further as it cools. Spoon about 2 tablespoons into each of 6 serving glasses.
- Make the pudding on the stovetop: Whisk together the egg yolks, granulated sugar, cornstarch, and salt in a medium heatproof bowl until pale and smooth. Warm the whole cow’s milk in a saucepan over medium heat until steaming. Slowly pour about 120ml of hot milk into the egg mixture, whisking constantly to temper. Pour the egg mixture back into the saucepan.
- Cook over medium heat, whisking constantly, until the mixture thickens and bubbles, about 5 to 8 minutes. Whisk for 2 more minutes after the first bubble appears. Remove from heat and whisk in the cold butter and vanilla until smooth. Cool for 5 minutes, then fold in the heavy cream.
- Pour the warm pudding over the cajeta in each glass. Press plastic wrap onto the pudding surface to prevent a skin forming. Refrigerate for at least 2 hours until set. Garnish with extra cajeta and pepitas before serving.
- Make the cajeta on the stovetop following Steps 1 and 2 of the classic stovetop method. Spoon 2 tablespoons into each of 6 serving glasses and set aside.
- Make the microwave pudding: In a large microwave-safe bowl (at least 2-quart capacity), whisk together the egg yolks, granulated sugar, cornstarch, and salt until smooth. Gradually whisk in all 500ml of cold whole cow’s milk until fully combined.
- Microwave on High in 2-minute intervals, whisking vigorously for at least 30 seconds after each interval. After the second or third interval, the mixture will begin to thicken noticeably around the edges. Continue microwaving in 1-minute intervals, whisking thoroughly between each, until the pudding is thick, smooth, and glossy, with no lumpy patches, about 8 to 12 minutes total depending on your microwave wattage. It should mound slightly when dropped from the whisk.
- Whisk in the cold cubed butter and vanilla until fully melted and the pudding is silky. Let cool for 5 minutes, then fold in the heavy cream. Pour evenly over the cajeta in each glass. Press plastic wrap directly onto the surface of each pudding and refrigerate for at least 2 hours.
- Serve cold, topped with a drizzle of the remaining cajeta and optional garnishes.
Nutrition Per Serving
Per 1 serving (makes 6 individual pudding cups (approximately 180ml each))
Why This Recipe Works
The magic of cajeta begins with a single ingredient: baking soda. Adding a small amount of baking soda to the goat milk before cooking raises its pH slightly, which accelerates the Maillard reaction and caramelization as the mixture reduces over heat. This is what gives cajeta its deeply bronzed color and complex, almost butterscotch-like flavor in a reasonable amount of time. Without it, the process would take significantly longer. The wide, heavy-bottomed pan also matters here: more surface area means faster evaporation, and heavy walls prevent hot spots that could scorch the bottom before the top has properly reduced. Goat milk specifically contributes a subtle tanginess and a slightly lower pH than cow’s milk, which actually makes it caramelize even more readily and gives cajeta its characteristic flavor that sets it apart from standard dulce de leche.
For the pudding, the combination of egg yolks and cornstarch creates what pastry chefs call a crème pâtissière or pastry cream. The egg yolks provide fat, emulsifying lecithin, and proteins that set into a lush, creamy body, while the cornstarch provides strong, reliable thickening that holds the pudding firm even after chilling. The critical step is tempering: pouring hot milk slowly into the egg mixture rather than the other way around raises the egg temperature gradually, preventing the proteins from seizing and scrambling. Cooking the cornstarch-thickened pudding for a full two minutes after the first bubble is also essential. Cornstarch contains an enzyme called alpha-amylase that can break down the starch structure and cause the pudding to thin out as it cools. Two minutes of heat above 200°F (93°C) deactivates this enzyme and guarantees a stable set.
Adding cold butter at the very end is a technique borrowed from classic French sauces called mounting with butter. As the cold butter melts into the hot pudding, it emulsifies into tiny fat droplets that coat the proteins and give the finished custard a glossy, almost spoonable richness. Folding in the cold heavy cream at the end adds one final layer of fat that lightens the texture slightly and gives it that characteristic silky finish. If your pudding turns out lumpy, do not panic: strain it through a fine-mesh sieve while it is still warm and it will emerge perfectly smooth.
Baker’s Tips
- Use a wide, heavy-bottomed saucepan for the cajeta, at least 10 inches in diameter if possible. More surface area speeds evaporation and gives you more control over browning.
- Grate or very finely chop the piloncillo before adding it to the milk. Large chunks take much longer to dissolve and can cause uneven caramelization.
- Watch the cajeta closely in the final 10 to 15 minutes. Color deepens quickly at that stage and the difference between perfectly amber and over-darkened is just a few minutes. Err on the side of pulling it slightly early as it continues to cook briefly off the heat.
- For the smoothest possible pudding, strain it through a fine-mesh sieve directly into a pourable measuring jug before filling the glasses. This catches any small egg bits and gives you a perfectly silky result.
- Do not skip pressing plastic wrap directly onto the pudding surface. Even 5 minutes of air exposure creates a rubbery skin that no amount of garnish will hide.
- If your cajeta has thickened too much in the fridge to pour, stir in a tablespoon of warm water or goat milk and heat it gently until it loosens to a pourable consistency.
- Bring your egg yolks to room temperature before starting the pudding. Cold yolks are harder to whisk smooth and can cause slight lumping when the hot milk is added.
Variations
- Chocolate cajeta pudding: Whisk 25g (about 3 tablespoons) of high-quality cocoa powder into the egg yolk mixture along with the cornstarch, and stir 60g finely chopped dark chocolate into the finished pudding along with the butter.
- Spiked cajeta: Stir 2 tablespoons of dark rum or aged tequila into the finished cajeta off the heat. The alcohol softens the sweetness and adds a sophisticated depth perfect for an adult dinner party.
- Coconut cajeta pudding (dairy-free): Use two 400ml cans of full-fat coconut milk in place of the goat milk for cajeta, and a third can plus enough coconut cream to make 500ml for the pudding. Use vegan butter and coconut cream in place of the heavy cream.
- Individual cajeta trifles: Layer crushed cinnamon graham crackers or Maria cookies between the cajeta and pudding layers in the glasses for a texture contrast that turns this into a no-fuss trifle.
Troubleshooting & FAQ
My cajeta is still very liquid after 55 minutes. What went wrong?
My cajeta turned grainy or crystallized. Can I fix it?
My pudding is lumpy. Did I ruin it?
The pudding set but it is watery or weeping liquid around the edges. What happened?
My cajeta tastes burnt and bitter. Can I still use it?
Storage & Make-Ahead
- Storage: Store covered pudding cups in the refrigerator for up to 4 days. Press plastic wrap against the surface to prevent a skin. The cajeta can be stored separately in a sealed jar in the refrigerator for up to 3 weeks. Do not freeze the assembled pudding, as the custard will become grainy and weep upon thawing.
- Make-Ahead: The cajeta can be made up to 2 weeks ahead and refrigerated in a jar. Gently rewarm it on the stovetop or in the microwave before using, as it thickens considerably when cold. The pudding cups can be assembled and refrigerated up to 2 days before serving. Add garnishes just before serving.






