Preheat a large nonstick skillet over medium-high heat with 2 turns of the pan of extra-virgin olive oil, about 2 tablespoons, and 2 tablespoons of butter. While the pan is getting hot and the butter is melting, cut the potatoes in half and then thinly slice them, add to the hot skillet and season with salt, pepper, thyme and the crushed red pepper flakes. Cook, stirring every now and then, for about 10 minutes or, until potatoes have browned and are tender. Add the onion and the ham and continue to cook for 3 to 4 minutes
Preheat another skillet over medium high heat with 2 tablespoons of butter. Once the butter has melted and the bubbles have subsided, crack extra-large eggs into the pan, season with salt and pepper and fry to desired doneness.
While the eggs are frying, finish off the hash by adding the roughly chopped spinach and basil to the potatoes. (Defrosted frozen spinach and some pesto would be added in at the same point if using substitutions.) Toss to wilt and warm the spinach. Sprinkle the hash with tomatoes and cheese and remove from the heat. Transfer the ham and spinach hash to plates. Top each portion with a single fried egg or arrange the fried eggs evenly over the platter.