Separate asparagus tips and stalk pieces, and set asparagus tips aside.
Heat olive oil in a saucepan over medium heat; cook and stir onion until tender, 5 to 10 minutes. Add garlic; cook and stir until fragrant, about 1 minute.
Mix chicken broth, asparagus stalk pieces, carrots, parsley, basil, pepper, and salt into onion mixture; bring to a boil. Reduce heat to medium and simmer until asparagus and carrots are tender, 10 to 15 minutes.
Pour soup into a blender no more than half full. Cover and hold lid down; pulse a few times before leaving on to blend. Puree in batches until smooth. Return soup to saucepan, add asparagus tips, and stir in half-and-half. Simmer soup until tips are tender, about 5 minutes.