Preheat the oven to 400°F. Coat a 9x13 glass baking dish with nonstick cooking spray. Set aside.
In a 4-quart saucepan heat butter, water, and salt over medium heat. When the butter has melted completely and the mixture begins to boil, remove it from heat.
Immediately mix flour into the saucepan and stir with a wooden spoon until mixture pulls away from the sides of the pan and forms a smooth ball.
Allow mixture to cool for about 5 minutes.
Adding only one egg at a time, beat each egg into the flour mixture with a wooden spoon. The mixture will separate with the addition of each egg but then come back together, forming a smooth paste-like batter.
Spread batter into the bottom of the prepared baking dish.
Bake for 25 minutes or until the edges have poofed up the sides of the baking dish and the batter is golden brown. Some of the batter on the bottom of the dish may puff up also, which is fine.
Use the wire whisk attachment on a hand or standing mixer to beat together softened cream cheese, pudding, milk, and heavy cream. A wire whisk will help to break down the cream cheese, but it is important that the cream cheese is quite soft before mixing.
Spread pudding mixture to fill the cooled puff. Spread the whipped topping evenly over the pudding filling.
Serve with hot fudge sauce drizzled over the top.