Este patrón te sirve para lo que buscas
Fíjate además que en el que tu propones, al usar .* como parte del patrón, cogerá tantos caracteres como pueda. Eso significa que si tienes la cadena "hola - que - tal - pascual", ".*" coincidirá con "hola - que - tal".
Eso lo solucionamos usando en su lugar ".*?" , que significa que coja los menos caracteres posibles. Lo que nos va de lujo para eliminar solamente el inicio.
Y por otra parte no te hace falta capturar
Al final quedaría algo tal que así:
Código PHP:
$patron = '/^.*? -/s';
$sustitucion = '';
$cadena = "Rural al Gobierno - TN - Todo Noticias";
return preg_replace($patron, $sustitucion, $cadena);