How to add gradient between colours in object? New to Blender but can't seem to find an answer to this.

I have an object with different colours applied to different faces of the object. 

I would like to make the colour change between grey and red softer, rather than the hard change seen in the image.

Is there an easy way to do this? For example a short gradient.
There are several ways to do it, you could use an Image Texture node and paint on your object.

You can also do it procedurally with a Texture > Gradient Texture node and a Converter > ColorRamp node: