I always start by peeling and cubing my sweet potatoes into roughly even pieces, so they cook at the same rate. Smaller cubes mean a faster simmer and a smoother final purée. I chop my onion and mince the garlic while the pot is warming up, so nothing sits around going soft.
I heat the olive oil in my pot over medium heat until it shimmers slightly. Then I add the onion and let it soften for about 4 to 5 minutes, stirring now and then. Once it turns translucent, I stir in the garlic for just a minute, since it burns fast and turns bitter quickly.
Next, I toss in my cubed sweet potatoes along with the cinnamon, salt, and pepper, stirring everything together for a minute so the spices coat the pieces. I then pour in the vegetable broth, making sure the potatoes are mostly submerged, and bring the whole pot up to a gentle boil.
I reduce the heat and let everything simmer uncovered for about 15 to 20 minutes. I know it's ready when a fork slides into the sweet potato cubes with almost no resistance. This is the step I never rush, since undercooked potatoes make for a grainy soup later.
Once the potatoes are soft, I use my immersion blender right in the pot to purée everything until silky. If I'm using a regular blender, I work in batches and leave the lid slightly vented so steam can escape safely. This is where the soup really transforms into something special.
I stir in the coconut milk or cream at this stage if I'm using it, then taste and adjust the salt and pepper. If the soup feels too thick, I thin it out with a splash more broth or water until it reaches the consistency I like.