Prep + Onions: Preheat oven to 350 degrees F. Add the butter and onions to a medium frying pan on medium heat. Cook, stirring frequently, until onions soften (about 5 minutes).
3 tablespoons butter, 1 cup yellow onion
Garlic + Starch: Add garlic and sprinkle the starch over the onions. Cook for another 2 minutes, stirring constantly.
1 clove garlic, 3 tablespoons tapioca starch
Add the Liquids: Combine the milk and broth. Pour this mixture into the pan in ¼-1/3 cup increments, whisking between additions to prevent clumping. Continue whisking until smooth.
½ cup chicken broth, 1 cup milk or choice
Boil + Season: Bring the mixture to a low boil, adjusting heat as needed. Add salt, pepper, and nutritional yeast. Mix thoroughly and and return to a low boil for 2-3 minutes or until the sauce thickens. Then remove from heat and set aside.
¾ teaspoon salt, ¼ teaspoon ground black pepper, 1 tablespoon nutritional yeast
Assemble the first layer: Grease an 8-inch (20 cm) square baking dish or similarly sized cast iron skillet with butter. Layer ⅓ of the potatoes across the bottom in an uneven pattern with holes to allow the sauce to drip through. Cover with ⅓ of the sauce.
1 ½ pounds russet potatoes
Add two more layers: Repeat the previous step for two more layers.
Bake while covered: Cover loosely with aluminum foil. Bake for 45 minutes at 350 degrees F (175 C).
Bake uncovered: Uncover and bake for an additional 30 minutes or until the potatoes are golden brown and tender. Then broil on high for 3-4 minutes to form a golden crust on top. Remove from the oven and let cool for 10-15 minutes before serving.