Heat the oil in a large non-stick saucepan over a moderate heat. Add the onion and cook for 5 minutes until softened. Add the cabbage, red wine and allspice. Reduce the heat, cover and cook gently for 20 minutes, or until tender.
Add the vinegar, sugar and salt and cook, uncovered, stirring occasionally, for 5 minutes, or until almost all the liquid has evaporated. Stir in the butter and serve.