Place lentils in a pot with water to cover; bring to a boil. Drain, reserving water.
Heat oil in a skillet over medium-high heat. Saute onion until translucent, 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 a boil.
Reduce heat to low; partially cover and let simmer until liquid is almost gone, 35 to 45 minutes.