Wash potatoes under cold running water and gently remove any dirt using a potato or vegetable scrubber. Dry well.
Fill a large bowl with cold water. Set aside. Shred potatoes (peeled or unpeeled) with the big holes of a box grater. You may also use a food processor, if available. Immediately transfer the shredded potatoes to the bowl of cold water.
Once all of the potatoes have been shredded and soaked, drain the starchy water. Fill again with clean (cold) water and use your hand to gently slosh around the shredded potatoes to remove any excess starch. Drain, and refill with clean water, this time allowing the potatoes to soak for 10 minutes.
Drain the potatoes in a large colander and thoroughly dry the potatoes, removing as much excess moisture as possible (this step is crucial for crispy potatoes). Dry them with paper towels, a clean dish towel, or place them between a few layers of cheesecloth and gently squeeze out as much excess water as possible.
To cook - Divide the potatoes into two batches. Heat a large skillet (a non-stick skillet or cast-iron skillet) over medium-high heat. Once hot, add 2 tablespoons butter and 1 tablespoon oil. Allow the butter to melt. Swirl to coat the bottom of the skillet.
Spread the first batch of potatoes in an even layer over the bottom of the pan and season generously with salt and pepper. Gently press down on the potatoes with a spatula to flatten, encouraging potatoes to brown evenly.
Allow the potatoes to cook undisturbed for 4-5 minutes, or until golden brown on the bottom. Flip the potatoes in 3-4 sections, and continue to cook on the other side for 4-5 minutes, or until golden brown on the other side and cooked through.
Serve immediately with a side of ketchup, if desired, and all your favorite breakfast additions including bacon, eggs, and sausage.
Notes
This recipe is gluten-free and vegetarian. To make vegan and dairy-free, omit the butter and replace it with a plant-based butter substitute or additional olive oil.