In a large pot with a lid, melt 2 tablespoons butter over medium heat. Add onions and cook until they begin to brown at the edges, about 6 minutes.
Add cabbage, apple (if using), wine, water, vinegar, sugar, salt, caraway seeds (if using), and pepper. Stir to combine, and bring up to a boil. Reduce heat to a simmer and cover. Cook, stirring occasionally, until most of the liquid has evaporated and cabbage is crisp-tender, about 40 minutes. Taste and adjust the seasonings as necessary.
Remove from heat and stir in the remaining tablespoon of butter. Garnish with fresh herbs and serve.
