- 1 ½ cups granulated sugar
- ¼ cup all-purpose flour
- 3 tablespoons cornstarch
- ¼ teaspoon salt
- 1 ½ cups milk (I used 1% with stellar results)
- 2 teaspoons pure vanilla extract (or 1 tsp vanilla and 1 tsp almond extract)
- 24 tablespoons (3 sticks) butter, cut into 24 pieces and softened at room temperature
In a medium bowl, combine the sugar, flour, cornstarch and salt. Slowly whisk in the milk until the mixture is smooth. Strain mixture into saucepan. Cook the mixture over medium heat, whisking constantly, until the mixture boils and is thick enough that it starts to become difficult to easily whisk. This could take anywhere between 5-10 minutes.
Transfer the mixture to a clean bowl and cool to room temperature – this is extremely important! You can refrigerate the mixture overnight, but be sure to let the mixture come to room temperature before continuing.
Once the frosting is completely cooled to room temperature, beat the mixture with the vanilla on low speed until it is well combined, about 30 seconds.
Add the butter, one piece at a time, and beat until all the butter has been incorporated. Increase speed to medium-high. Beat for five minutes, until it is light and fluffy.
Let the frosting sit at room temperature for about an hour, until it is a bit more stiff. Can sit in refrigerator if you want to pipe the frosting on cupcakes. Room temperature frosting is best for using a spatula.
Chocolate Version: Add ¼ cup cocoa powder to the sugar, flour, cornstarch, salt mixture in the first step. Once the frosting has been mixed for five minutes and is light and fluffy, mix in 3 ounces of semisweet chocolate that has been melted and completely cooled to room temperature.