diff --git a/modules/node/node.pages.inc b/modules/node/node.pages.inc
index f59c22c917ce5b37b37bd3d6d1614b2361671767..1fb688ab65f6cfb70ba95e2a9fd41c4fbd05362a 100644
--- a/modules/node/node.pages.inc
+++ b/modules/node/node.pages.inc
@@ -236,6 +236,7 @@ function node_form(&$form_state, $node) {
   $form['buttons']['#weight'] = 100;
   $form['buttons']['submit'] = array(
     '#type' => 'submit',
+    '#access' => !variable_get('node_preview', 0) || (!form_get_errors() && isset($form_state['node_preview'])),
     '#value' => t('Save'),
     '#weight' => 5,
     '#submit' => array('node_form_submit'),