In a medium saucepan, over low heat, melt butter; add onion, garlic, ginger, fenugreek, cumin, cardamom, oregano, turmeric, basil, and cook 15 minutes, stirring occasionally.
Remove from heat and let stand 10 minutes; strain through a fine mesh sieve into a heat proof bowl (may be stored in a tightly covered container in the refrigerator for 3 weeks).
To make the cabbage and green beans heat a saute pan or skillet over medium heat; melt 1/2 cup spiced butter and add cabbage and sliced onion.
Saute until cabbage is wilted, about 5 minutes; add fresh tomatoes, canned tomatoes, garlic, mustard seeds, nigella seeds, turmeric, berbere, cardamom, and ginger.
Cook, over low heat, until soft and fragrant, stirring occasionally, about 30 minutes.
Meanwhile, prepare and ice water bath; bring 6 cups of water to a boil in a medium saucepan.
Add green beans to boiling water, reduce heat to low, and cook until bright and tender, 3 to 5 minutes; immediately drain and plunge beans into the water bath.
Drain beans and fold into the tomatoes and cabbage mixture; simmer 10 minutes.
Taste and adjust for salt.; serve with injera bread or rice.