I start by heating my oven to 350°F and greasing my 9x13-inch pan with butter or cooking spray. This keeps the cake from sticking once it's fully soaked and ready to serve. A well-greased pan makes cutting clean slices so much easier later.
In a medium bowl, I whisk together the flour, baking powder, baking soda, salt, pumpkin pie spice, and cinnamon. Whisking instead of just stirring helps distribute the leavening evenly. This little step keeps my cake from baking unevenly or getting dense spots.
In a separate large bowl, I beat the pumpkin puree, granulated sugar, brown sugar, oil, eggs, vanilla, and milk until smooth. I use a hand mixer here to save my arm some work. The mixture should look glossy and well combined before moving on.
I gradually fold the dry ingredients into the wet mixture, mixing just until no flour streaks remain. Overmixing at this stage can make the cake dense instead of soft. A few small lumps from the pumpkin are completely fine.
I pour the batter into my prepared pan and bake for 30 to 35 minutes. I test doneness with a skewer inserted into the center; it should come out clean. Every oven runs a little differently, so I start checking around the 28-minute mark.
Once it's out of the oven, I let the cake cool at room temperature for about 15 to 20 minutes. This cooling time matters because pouring the soak over a hot cake can make it fall apart. Patience here really pays off in the final texture.
While the cake cools, I whisk together the evaporated milk, sweetened condensed milk, cream, and pumpkin pie spice in a bowl. I make sure it's completely smooth with no streaks. This mixture is what turns a regular cake into a true tres leches.
I use a skewer to poke holes all over the cooled cake, spacing them about an inch apart. Then I slowly pour the milk mixture over the top, giving it time to sink into every hole. It looks like way too much liquid at first, but the cake really does absorb it all.
I cover the pan tightly with plastic wrap and refrigerate it for at least 4 hours, though overnight is even better. This chilling time is non-negotiable; it's what lets the cake fully soak up all that milky goodness. Skipping it leaves you with a puddle instead of a cake.
Right before serving, I whip the heavy cream with powdered sugar and vanilla until soft peaks form. I try not to overwhip it, since it can turn grainy fast. This topping should stay light and fluffy, not stiff like frosting.
I spread the whipped cream evenly over the chilled cake using an offset spatula. A light dusting of cinnamon on top finishes it off beautifully. At this point, it's ready to slice and serve.