In C# polymorphism, the 'virtual' keyword is used in the base class to allow a method to be overridden, and the 'override' keyword is used in the derived class to provide the implementation. There is no 'overload' keyword - method overloading is achieved by having multiple methods with the same name but different parameters.