In a large saucepan or Dutch oven, add the oil and heat over medium heat. Stir in the onion, carrot and celery and season with salt and pepper, to taste. Cook, stirring frequently, until the vegetables are soft, about 5 minutes.
Increase the heat to high and add the ground beef and garlic. Season with salt and pepper, to taste. Cook until the beef is browned and cooked through, about 5 minutes.
Stir in the tomato paste and mix to combine. Add the broth, tomatoes, beans, and bay leaf. Bring the mixture to a boil. Reduce the heat to a simmer and cook until the liquid has reduced by half, about 30 minutes.
Remove the bay leaf and discard. Season with salt and pepper, to taste. Ladle the soup into bowls and garnish with Parmesan cheese.