diff --git a/django/db/models/query.py b/django/db/models/query.py
index 6a6a829..8e37f71 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -1126,6 +1126,18 @@ class EmptyQuerySet(QuerySet):
         """
         return self
 
+    def values(self, *fields):
+        """
+        Always returns EmptyQuerySet.
+        """
+        return self
+
+    def values_list(self, *fields, **kwargs):
+        """
+        Always returns EmptyQuerySet.
+        """
+        return self
+
     def update(self, **kwargs):
         """
         Don't update anything.
diff --git a/tests/regressiontests/queries/tests.py b/tests/regressiontests/queries/tests.py
index 31856ba..31351f5 100644
--- a/tests/regressiontests/queries/tests.py
+++ b/tests/regressiontests/queries/tests.py
@@ -1471,6 +1471,15 @@ class EmptyQuerySetTests(TestCase):
             Number.objects.none().values('num').order_by('num'), []
         )
 
+    def test_bare_emptyqueryset_values(self):
+        # #15959 -- .values()/.values_list() fails on EmptyQuerySet
+        self.assertQuerysetEqual(
+            EmptyQuerySet().values('id'), []
+        )
+        self.assertQuerysetEqual(
+            EmptyQuerySet().values_list('id', flat=False), []
+        )
+
     def test_values_subquery(self):
         self.assertQuerysetEqual(
             Number.objects.filter(pk__in=Number.objects.none().values("pk")),
