Pat the beef dry and season it lightly with salt. Heat the oil in a heavy pot or Dutch oven over medium-high, then brown the beef hard on two sides, about 6 to 8 minutes total, working in two batches so the pieces sear rather than steam. Move the browned beef to a plate.
Lower the heat to medium. Add the onion, garlic and ginger to the same pot and cook until soft and fragrant, about 4 minutes, scraping up the browned bits stuck to the bottom. Stir in the chopped tomato and let it break down for a minute.
Add the kecap manis and regular soy sauce and let them bubble and darken for about a minute. Cooking the sweet soy this way takes off the raw sugary edge and starts building the deep color semur is known for.
Return the beef and any juices to the pot. Add the cloves, nutmeg, cinnamon, white pepper and the broth. The liquid should nearly cover the beef, so top up with a little water if needed. Bring to a boil, then drop to a bare simmer.
Cover and simmer gently for 90 minutes, stirring once or twice. Chuck is a hard-working cut full of connective tissue, and it needs this slow stretch to turn silky rather than chewy. Skim off any heavy fat that pools on top.
Add the potatoes and the peeled hard-boiled eggs, nestling them into the sauce. Simmer uncovered for a final 30 minutes, until the potatoes are tender and the beef pulls apart with a fork. The sauce should reduce to a glossy gravy that coats a spoon.
Fish out the cinnamon stick and cloves if you can find them. Taste and adjust with the salt or a splash more kecap manis. Serve over steamed rice, spooning the eggs and gravy on top, and finish with fried shallots and scallions.