1) Cook the onions over medium heat for a few minutes in a dry (no oil) pot or Dutch Oven, large enough to eventually hold all of the ingredients. Stir constantly to prevent them from browning or burning; reduce heat or remove the pot from the heat if necessary.
2) Add the butter to the onions, along with the garlic, ginger, fenugreek, cardamom, nutmeg, cayenne pepper and paprika,and tomato. Stir and simmer for a few minutes. The onions should be soft, tender, and translucent, but not browned.
3) Add the stock and dry red wine. Bring the mixture to a low boil while stirring gently. Cook for a few minutes, then reduce heat. Take a few tablespoons of broth out of the pot and mix it in a small bowl with the cornstarch until lumps are gone. Stir into the pot.
4) Add the tofu pieces, making sure to cover them with the sauce. Cover and simmer for 20 minutes.
5) After the tofu has gotten warmed, add salt and pepper to taste. Then gently add the hard-boiled eggs and ladle sauce over them.
6) Serve hot. The only traditional way to serve doro wat is with a spongy flat bread called injera, which can only be properly made with difficult-to-obtain teff flour. Doro wat is also very good with Couscous, Rice, or Middle-Eastern or Indian style flat bread.