Have you ever cooked something - like, a minestrone soup or a curry with a lot of vinegar - and noticed that the vegetables stay firm and hard even after long cooking? It's not the vegetables or your cooking skills, it's the amount of acidic liquids in the cooking liquid!
As you've no doubt observed in your everyday cooking, vegetables normally soften as they cook. A big part of this is because cells in the vegetable are held together with a particular kind of carbohydrate called hemicelluloses (say that five times fast!). These hemicelluloses dissolve in the heat and steam of cooking, weakening the cell walls and causing the vegetables to soften.
But here's the deal - hemicelluloses aren't soluble in acid and therefore won't dissolve if the cooking environment is too acidic. So once you've added the tomatoes to a minestrone or the vinegar to a sauce, vegetables essentially stop cooking exactly where they are.
The simple solution to this is to add the acidic component toward the very end of cooking. You can also cook vegetables separately until they're as soft as you want them and then add them to the main pot.
And look on the bright side, at least you'll never get mushy vegetables!
Have you ever noticed this phenomenon happening in any of your recipes?