diff --git a/modules/product_reference/commerce_product_reference.module b/modules/product_reference/commerce_product_reference.module
index 7f29924..3483014 100644
--- a/modules/product_reference/commerce_product_reference.module
+++ b/modules/product_reference/commerce_product_reference.module
@@ -618,6 +618,40 @@ function commerce_product_reference_field_views_data($field) {
 }
 
 /**
+ * Implements hook_views_data_alter().
+ *
+ * Adds inverse relationships between the product and entity types referencing
+ * it (for example, nodes).
+ */
+function commerce_product_reference_views_data_alter(&$data) {
+  foreach (field_info_fields() as $field_name => $field) {
+    if ($field['type'] !== 'commerce_product_reference') {
+      continue;
+    }
+
+    foreach ($field['bundles'] as $entity_type => $bundles) {
+      if ($entity_type == 'commerce_line_item') {
+        continue;
+      }
+
+      $entity_info = entity_get_info($entity_type);
+      $data['commerce_product'][$field['field_name']]['relationship'] = array(
+        'handler' => 'views_handler_relationship',
+
+        'base' => $entity_info['base table'],
+        'base field' => $entity_info['entity keys']['id'],
+        'relationship table' => _field_sql_storage_tablename($field),
+        'relationship field' => 'product_id',
+
+        'label' => t('!child referencing products from !field_name', array('!child' => $entity_info['label'], '!field_name' => $field['field_name'])),
+        'title' => t('!child referencing products from !field_name', array('!child' => $entity_info['label'],  '!field_name' => $field['field_name'])),
+        'help' => t('Relate a product to the !entity_type referencing it.', array('!entity_type' => strtolower($entity_info['label']))),
+      );
+    }
+  }
+}
+
+/**
  * Creates a required, locked instance of a product reference field on the
  * specified bundle.
  *
