Heat olive oil in a large pot over medium heat. Add celery, leek, and shallot. Sauté for 10 to 15 minutes, stirring occasionally, until fully soft and translucent.
Add minced garlic and cook for 2 more minutes, stirring frequently.
Add drained cannellini beans. Season with salt and black pepper. Stir well to combine.
Pour in the vegetable broth. Bring to a steady simmer and cook for 5 minutes.
Add the dried pasta. Stir, cover with a lid, and cook for about 10 minutes — stirring occasionally — until pasta is just al dente.
Taste and adjust seasoning with salt and pepper as needed.
Add frozen peas, asparagus, parsley, and dill. Stir and cook for 2 to 3 minutes until vegetables are just tender and bright green.
Stir in lemon zest. Remove from heat.
Make the pesto: blend all pesto ingredients together until smooth.
Ladle soup into bowls. Top with a spoonful of pesto, lemon zest, red pepper flakes, fresh herbs, and a drizzle of olive oil. Serve immediately.