Respuesta :

John Winchester was played by Jeffrey Dean Morgan

Jeffery Dean Morgan played John as the regular present day one. The John from the past was played by Matthew Cohen.