In a large heavy-bottomed pot or Dutch oven, heat 2 tablespoons olive oil over medium heat. Add diced pancetta and cook, stirring occasionally, until crisp and the fat has rendered, about 5 minutes. Remove pancetta with a slotted spoon and set aside, leaving the fat in the pot.
To the same pot, add onion, celery, and a pinch of salt. Cook, stirring often, until softened and translucent, about 6 minutes. Add garlic and rosemary and cook 1 minute more until fragrant.
Pour in the hand-crushed tomatoes and their juices. Stir well, scraping up any browned bits from the bottom. Simmer until slightly thickened, 5 minutes.
Stir in chicken broth, all the beans (both whole and mashed), and the reserved pancetta. Bring to a gentle boil, then reduce heat to a steady simmer. Cook uncovered for 10 minutes, stirring occasionally.
Add ditalini and cook at a gentle simmer until al dente, about 8 minutes, stirring frequently to prevent sticking. If the soup becomes too thick, add a splash of hot water or broth.
Off the heat, stir in the Parmesan, salt, and pepper. Taste and adjust seasoning. Ladle into warm bowls, drizzle with olive oil, and top with extra cheese and black pepper.