If you want to be as flexible as possible and see not only big cities but also small picturesque towns, I would recommend renting a car. I recently used the Car Rental Italy service through
https://findycar.com/car-rental-italy/ . There you can easily compare prices and conditions of different companies, choose a car that fits your budget, and book online before you arrive. It's very convenient because you decide the route yourself, stop where you want, and don't depend on transport schedules. In addition, the platform allows you to select additional options, such as GPS or insurance, which makes the trip more comfortable. This really solved the planning problem for me, because I could travel at my own pace, visiting wine regions, villages, and castles that are not included in standard tours.