Finely chop the onion, celery and garlic.
Heat the olive oil in a large saucepan over a low heat. Add the onion and celery and sauté gently until soft but not coloured.
Meanwhile, peel the sweet potato, celeriac and carrot, then cut them into chunky pieces.
Add the garlic and dried oregano or marjoram to the pan and stir for about 30 seconds, until fragrant.
Stir in the chopped vegetables and tomato purée, cooking for another 30 seconds to coat everything well.
Add the chopped fresh tomatoes (or tinned tomatoes), followed by the stock and bay leaf.
Bring to the boil, then cover and simmer gently for about 25 minutes, until the vegetables are tender. Add a little extra stock if the soup becomes too thick.
Cut the frankfurters into four pieces each. Add them to the soup and cook for a further 3–5 minutes.
Stir in the chopped parsley and season with freshly ground black pepper.
Ladle the soup into bowls and serve hot with fresh crusty bread, sourdough or rolls.