Heat the oil in a large heavy-based saucepan, add the onion and fry for 5 minutes, until lightly browned. Add the potato and garlic and fry for 5 further minutes, stirring, until softened.
Add the tomatoes and stock, and season with salt and pepper, then bring to the boil. Cover the pan and simmer for 10 minutes, until reduced and thickened. Add the broccoli, peas and pesto and simmer for 3–4 minutes, until the broccoli is just tender.
Garnish the soup with a little extra pesto and the basil and serve with Parmesan.