Prep the potatoes: Rinse, dry, and cut potatoes into even 1/2-inch cubes. Uniform size helps them cook quickly and crisp evenly.
Soak briefly (optional but helpful): Place the potato cubes in a bowl of cold water for 5 minutes to remove excess starch.
Drain and pat very dry with a clean towel. Dry potatoes = better browning.
Heat the pan: Set a large skillet (cast iron works best) over medium-high heat. Add the oil and let it heat until shimmering. If using butter, add it now and let it melt into the oil.
Start the potatoes: Add the potatoes in a single layer.
Don’t overcrowd the pan. Let them cook undisturbed for 4–5 minutes to build a golden crust on the first side.
Season and toss: Sprinkle on salt, pepper, paprika, garlic powder, and onion powder. Toss and continue cooking, stirring every 2–3 minutes.
Keep most stirring gentle to avoid breaking the cubes.
Add aromatics: After about 10 minutes, stir in the onion and bell pepper. Cook another 6–8 minutes, stirring occasionally, until the potatoes are crispy outside and tender inside.
Finish with garlic: Add minced garlic in the last 60–90 seconds. Stir until fragrant to avoid burning.
Taste and adjust: Add a pinch more salt or pepper if needed.
If you like heat, sprinkle in red pepper flakes.
Garnish and serve: Remove from heat and top with chopped parsley or green onions. Serve hot with eggs, bacon, or avocado.