Heat olive oil in a large saucepan set over medium heat.
Add the onions and cook until softened, about 15 minutes.
Add ¼ cup water, cover the pan and cook until the onions are golden brown, about 15 minutes.
Add the balsamic vinegar, garlic, thyme, salt and pepper, and cook for additional 30 seconds.
Add the diced tomatoes and their juices and cook, stirring for 1 minute.
Add the barley and vegetable broth. Bring the mixture to a boil, cover the pan and reduce heat to medium-low. Simmer until the barley is almost tender, about 40 minutes.
Stir in the cannellini beans, cover and cook for additional 10 minutes, or until the barley is tender.
Stir in the spinach and cook until the spinach is wilted, 3 to 4 minutes. Taste and season with salt and pepper, if necessary. If the stew is too thick, add some vegetable broth to thin it. Serve.