Position a rack in the middle of the oven and preheat to 350℉ (175℃). Grease a 9x13 baking dish with butter or cooking spray and set aside.
Over a large mixing bowl, sift 2 cups all-purpose flour, 2 teaspoons baking powder, 1 teaspoon baking soda, 1 teaspoon iodized salt, and 2½ teaspoons pumpkin pie spice. Give the dry ingredients a quick whisk to combine.
In a separate medium mixing bowl, whisk together 1½ cups granulated sugar, 3 large eggs, 15 ounces pumpkin puree, 1 cup canola oil, and 1 teaspoon vanilla extract.
Slowly fold the wet ingredients into the dry ingredients, stirring gently with a spatula to just combine, or until no flour pockets remain. Be careful to not overmix or your cake will be tough.
Pour the pumpkin cake mixture into the prepared pan and spread the cake batter out evenly with the spatula.
Bake for 28-35 minutes, or until a toothpick inserted into the center of the cake comes out clean. I recommend checking at 28 minutes and adding bake time if needed.
Remove from the oven and let cool completely before icing the cake.
In a large bowl, beat ½ cup unsalted butter and 8 ounces cream cheese together until creamy and smooth. Add 1 teaspoon vanilla extract and 1 tablespoon milk and quickly beat again.
Add 2½ cups powdered sugar and beat on low speed until smooth. If needed, add up to 1 tablespoon of additional milk and ½ cup of powdered sugar, a little at a time until you reach the desired consistency. You are looking for a thick frosting that is easily spreadable.
Spread the frosting over the cooled cake. You can serve the pumpkin cake immediately once frosted OR refrigerate it for 12 hours prior to serving, which I find gives you a more flavorful result.