Heat the olive oil in a large soup pot over medium-high heat. Add the sausage and cook for 4–5 minutes, breaking it apart as it browns.
Add the onion, carrots, celery, rosemary, thyme, and parsley. Sauté for about 6 minutes, stirring occasionally, until the vegetables are softened.
Stir in the garlic and cook for 1 more minute, until fragrant.
Add the chicken broth, cannellini beans, kidney beans, diced tomatoes (with juices), tomato sauce, salt, pepper, and bay leaves. Bring to a boil over high heat, then reduce the heat and simmer for 5 minutes.
Stir in the pasta and continue to simmer for 9–10 minutes, or until the pasta is al dente.
Remove and discard the bay leaves. Remove the soup from the heat and stir in the grated Parmesan cheese.
If the soup becomes too thick, add more broth or water to reach your desired consistency. Taste and adjust seasoning with additional salt and pepper if needed.
Serve hot, garnished with more Parmigiano-Reggiano and optional crushed red pepper flakes.