Set a small paper-towel-lined plate next to the stove. In a heavy medium-large pot or dutch oven over medium heat, add the olive oil and the pancetta. Let cook, stirring frequently, until some of the fat has rendered out from the meat and it is just crisp, about 6 minutes.
Quickly remove the meat using a slotted spoon and reserve on the prepared plate. In the pot with the fat, quickly stir in the onions and season with salt. Turn the heat to medium-high and cook, stirring frequently, for 2 minutes.
Add the carrots and celery and another small pinch of salt, and cook, stirring occasionally, until some of the vegetables are lightly browned, 6-8 minutes more.
Add the garlic and let cook, stirring, for 30 seconds.
Stir in the tomatoes and bring to a simmer. Let simmer until the ingredients are better combined and the vegetables have softened slightly, about 5 minutes.
Using the back of a fork, mash about 1/2 cup of the beans well, then add them to the pot. Add the remaining whole beans, then pour in the stock and 2 cups water. Bring the soup to a boil, then reduce the heat and simmer for 5 minutes.
Add the pasta and adjust the heat to maintain a low simmer. Cook, stirring occasionally, until the pasta is al dente, 8-10 minutes.
Ladle the soup into bowls. Drizzle each with olive oil, and sprinkle with the reserved crispy meat pieces, the fresh basil, plenty of pecorino-romano, and more black pepper if desired. Serve immediately.