Spawning a prefab with an alternate material

This is the code I use to spawn prefabs at the moment:

Instantiate(ProjectilePrefab, position, transform.rotation);

My prefab consists of a model and a material. Can I spawn a prefab, but also assign to it a new material via code, or do I have to create a second prefab with the other material assigned to the model?

Yep.

var spawned = Instantiate(ProjectilePrefab, position, transform.rotation);
spawned.renderer.material = theMaterialYouWantToPutOnTheSpawnedObject;

You can change the material - just find all the mesh renderers attached to the objects in the prefab, after instantiating it, and poke their material properties. But you might consider encapsulating the material choice in the prefab - so attach a component that knows what to change, then your calling code just calls a method on that component to set the team/class/whatever of the instantiated object.