A favorite at breakfast time; my wife and son go nuts for these. I sometimes cook them as a side dish with dinner or lunch. Honestly, they're good at any time, with any meal. These are something I learned to make working as a short order cook and have modified for my own tastes over the years.
If using a starchy potato like Russets, peel and cut into roughly 1/2 cubes. If I am using a waxy potato like a red or Yukon Gold, I just wash and cube. I prefer the waxy potatoes because they tend to crisp up a little better.
In a pot of boiling, lightly salted water, cook the potatoes till about halfway finished or just beginning to yield when poked with a fork and drain.
Heat the olive oil in a saute pan or cast iron skillet over medium-high heat and cook the onions till just a bit translucent. You don't want any color on the onions.
Add the potatoes and sprinkle with the salt, pepper, garlic powder and paprika. Saute and stir occasionally until the potatoes get a nice golden brown on them.
Reduce heat to medium-low, add butter and parmesan cheese after butter has melted into pan. Toss in the pan to coat the potatoes. At this point they are ready to serve, but if you wish you can keep them on low heat as you cook your other dishes. They will continue to brown; this is the kind of dish that is almost impossible to overcook. If they become dry sitting in the pan, add a splash of olive oil or a pad of butter and give them a good stir.