After gaining the ability to charge your holy projectile, Dante is invulnerable while releasing the attack. Use this to evade the closest enemies attack while damaging other enemies with the projectile.
When Virgil appears near a save point, stand near him and press R. He will tell you a part of the story. Do it again and he will give you Souls. Save the game, intentionally die, then continue from the save point. You can talk to Virgil again to get more Souls. Repeat as desired.