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