diff --git a/include/pybind11/eigen.h b/include/pybind11/eigen.h
index 53d4dab..fc07051 100644
--- a/include/pybind11/eigen.h
+++ b/include/pybind11/eigen.h
@@ -462,6 +462,7 @@
             if (!fits || !fits.template stride_compatible<props>())
                 return false;
             copy_or_ref = std::move(copy);
+            loader_life_support::add_patient(copy_or_ref);
         }
 
         ref.reset();
diff --git a/tests/test_eigen.cpp b/tests/test_eigen.cpp
index 52358ab..413fed3 100644
--- a/tests/test_eigen.cpp
+++ b/tests/test_eigen.cpp
@@ -10,6 +10,7 @@
 #include "pybind11_tests.h"
 #include "constructor_stats.h"
 #include <pybind11/eigen.h>
+#include <pybind11/stl.h>
 #include <Eigen/Cholesky>
 
 using MatrixXdR = Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>;
@@ -298,4 +299,17 @@
         .def(py::init<>())
         .def_readonly("a", &CustomOperatorNew::a)
         .def_readonly("b", &CustomOperatorNew::b);
+
+    // test_eigen_ref_life_support
+    // In case of a failure (the caster's temp array does not live long enough), creating
+    // a new array (np.ones(10)) increases the chances that the temp array will be garbage
+    // collected and/or that its memory will be overridden with different values.
+    m.def("get_elem_direct", [](Eigen::Ref<const Eigen::VectorXd> v) {
+        py::module::import("numpy").attr("ones")(10);
+        return v(5);
+    });
+    m.def("get_elem_indirect", [](std::vector<Eigen::Ref<const Eigen::VectorXd>> v) {
+        py::module::import("numpy").attr("ones")(10);
+        return v[0](5);
+    });
 });
diff --git a/tests/test_eigen.py b/tests/test_eigen.py
index f9ad3a5..c9fe69f 100644
--- a/tests/test_eigen.py
+++ b/tests/test_eigen.py
@@ -602,6 +602,21 @@
             ', flags.c_contiguous' in str(excinfo.value))
 
 
+def test_eigen_ref_life_support():
+    """Ensure the lifetime of temporary arrays created by the `Ref` caster
+
+    The `Ref` caster sometimes creates a copy which needs to stay alive. This needs to
+    happen both for directs casts (just the array) or indirectly (e.g. list of arrays).
+    """
+    from pybind11_tests import get_elem_direct, get_elem_indirect
+
+    a = np.full(shape=10, fill_value=8, dtype=np.int8)
+    assert get_elem_direct(a) == 8
+
+    list_of_a = [a]
+    assert get_elem_indirect(list_of_a) == 8
+
+
 def test_special_matrix_objects():
     from pybind11_tests import incr_diag, symmetric_upper, symmetric_lower
 
