Heat the olive oil in a large Dutch oven or soup pot over low heat. Add the onions, carrots, celery and a pinch of salt. Cover and cook, stirring occasionally, until softened, about 7 minutes. Add the tomatoes (with their juices), broth and thyme and bring to a boil. Reduce to a simmer and cook, partially covered, for 15 minutes, until the vegetables are very tender and the flavors meld. Season with salt and pepper.
Add the kale and simmer, covered, until soft, another 15 minutes. Add the beans and bread and simmer until the bread starts to soften, 5 more minutes.
Ladle the soup into bowls, drizzle with olive oil and sprinkle with shaved Parmesan.