Place lentils in a pot with water to cover; bring to the boil. Drain, reserving water.
Heat oil in a pan over medium-high heat. Saute onion until softened, about 5 minutes. Add garlic; cook for 1 minute. Add celery and carrots; cook and stir until slightly tender, about 5 minutes. Add the partially cooked lentils, potatoes, tomatoes, parsley, vinegar, cinnamon, salt and pepper; cover with water and bring soup to the boil.
Reduce heat to low; partially cover and let simmer until liquid is almost gone, 35 to 45 minutes.