Giovanni

Giovanni is the boss of the Team GO Rocket. Grunts and Team GO Rocket Leaders are his subordinates.

Finding Giovanni
Giovanni can be found using Super Rocket Radar that can be acquired only from Team GO Rocket Special Research, after defeating each Team GO Rocket Leader at least once. Tracking down Giovanni's hideout is not as simple as in case of locating Team GO Rocket Leaders using regular Rocket Radar, as some hideouts marked using Super Rocket Radar may turn out to be PokéStops taken by regular Team GO Rocket Grunts that serve as decoys for Giovanni himself.

Battling Giovanni
After locating Giovanni's hideout, which basically is a PokéStop overtaken by him, trainers can engage battle with him just like in case of Team GO Rocket Grunts and Leaders.

This is current set of Pokémon to be used by Giovanni in battle with him.

Only one of Pokémon in the middle column is being fought in the single battle with Giovanni and this Pokémon is random. Pokémon highlighted with green can be caught after winning against Giovanni.

After defeating Giovanni, 5000 Stardust, several Potions, Revives and maybe a Unova Stone will be rewarded. Then Trainers can encounter and catch the Shadow Legendary Pokémon used by him. It has a 100% catch rate.

Winning against Giovanni increases the rank of the Ultra Hero medal.

Changes to Pokémon pool
From the release of Battle against Giovanni, until now, there were some changes to Giovanni's Pokémon party. Each month Giovanni has different set of Pokémon that can be fought.

Trivia

 * Giovanni can be considered a Team GO Rocket counterpart of Professor Willow, as they both are rather special characters in game, and they both have three subordinates/assistants.