diff --git a/app/graphql/resolvers/container_repository_tags_resolver.rb b/app/graphql/resolvers/container_repository_tags_resolver.rb
index abfd30bcc4c53488cae534f8bdfd8de837168f85..46547a0d0b433481d53b4ad9b86ee554faed0c18 100644
--- a/app/graphql/resolvers/container_repository_tags_resolver.rb
+++ b/app/graphql/resolvers/container_repository_tags_resolver.rb
@@ -72,13 +72,13 @@ def parse_pagination_cursor(result, direction)
       query_params[key]&.first
     end
 
-    def map_sort_field(sort)
-      return unless sort
+    def map_sort_field(sort_value)
+      return if sort_value.blank?
 
-      sort_field, direction = sort.to_s.split('_')
-      return sort_field if direction == 'asc'
+      sort = sort_value.to_s.gsub(/_(desc|asc)$/, '')
+      sort = "-#{sort}" if sort_value.end_with?('_desc')
 
-      "-#{sort_field}"
+      sort
     end
 
     def sort_tags(to_be_sorted, sort)
diff --git a/app/graphql/types/container_repository_tags_sort_enum.rb b/app/graphql/types/container_repository_tags_sort_enum.rb
index 253cffd9a8c4b7e019b150e26c8b885b6db1c509..5128ceb737210261e9a9a06cfb26b0ef9174b277 100644
--- a/app/graphql/types/container_repository_tags_sort_enum.rb
+++ b/app/graphql/types/container_repository_tags_sort_enum.rb
@@ -7,5 +7,9 @@ class ContainerRepositoryTagsSortEnum < BaseEnum
 
     value 'NAME_ASC', 'Ordered by name in ascending order.', value: :name_asc
     value 'NAME_DESC', 'Ordered by name in descending order.', value: :name_desc
+    value 'PUBLISHED_AT_ASC',
+      'Ordered by published_at in ascending order. Only available for GitLab.com.', value: :published_at_asc
+    value 'PUBLISHED_AT_DESC',
+      'Ordered by published_at in descending order. Only available for GitLab.com.', value: :published_at_desc
   end
 end
diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md
index 77573a3c1642d1e19e5bd774acf8902176c6c3d8..ce7df3ec64255ef01db1fd4564b1b17d3fb5a881 100644
--- a/doc/api/graphql/reference/index.md
+++ b/doc/api/graphql/reference/index.md
@@ -32728,6 +32728,8 @@ Values for sorting tags.
 | ----- | ----------- |
 | <a id="containerrepositorytagsortname_asc"></a>`NAME_ASC` | Ordered by name in ascending order. |
 | <a id="containerrepositorytagsortname_desc"></a>`NAME_DESC` | Ordered by name in descending order. |
+| <a id="containerrepositorytagsortpublished_at_asc"></a>`PUBLISHED_AT_ASC` | Ordered by published_at in ascending order. Only available for GitLab.com. |
+| <a id="containerrepositorytagsortpublished_at_desc"></a>`PUBLISHED_AT_DESC` | Ordered by published_at in descending order. Only available for GitLab.com. |
 
 ### `CustomerRelationsContactState`
 
diff --git a/spec/graphql/resolvers/container_repository_tags_resolver_spec.rb b/spec/graphql/resolvers/container_repository_tags_resolver_spec.rb
index 6490cf53aec63f73417d5420fe7b37ba7e5f5eeb..aaa858498804c9c2d8b82d537ed8dd33ab3ce1b8 100644
--- a/spec/graphql/resolvers/container_repository_tags_resolver_spec.rb
+++ b/spec/graphql/resolvers/container_repository_tags_resolver_spec.rb
@@ -83,27 +83,39 @@
       context 'with parameters' do
         using RSpec::Parameterized::TableSyntax
 
-        where(:before, :after, :sort, :name, :first, :last, :sort_value, :referrers, :referrer_type) do
-          nil  | nil  | 'NAME_DESC' | ''  | 10  | nil | '-name' | nil   | nil
-          'bb' | nil  | 'NAME_ASC'  | 'a' | nil | 5   | 'name'  | false | nil
-          nil  | 'aa' | 'NAME_DESC' | 'a' | 10  | nil | '-name' | true  | 'application/example'
+        where(:referrers, :sort_string, :sort_value) do
+          nil   | nil                 | nil
+          true  | nil                 | nil
+          false | nil                 | nil
+          nil   | 'NAME_ASC'          | 'name'
+          nil   | 'NAME_DESC'         | '-name'
+          nil   | 'PUBLISHED_AT_ASC'  | 'published_at'
+          nil   | 'PUBLISHED_AT_DESC' | '-published_at'
         end
 
-        with_them do
-          let(:args) do
-            { before: before, after: after, sort: sort, name: name, first: first,
-              last: last, referrers: referrers, referrer_type: referrer_type }.compact
-          end
+        let(:args) do
+          {
+            before: 'abc',
+            after: 'xyz',
+            sort: sort_string,
+            name: 'tag1',
+            first: 5,
+            last: 0,
+            referrers: referrers,
+            referrer_type: 'application/example'
+          }
+        end
 
-          it 'calls ContainerRepository#tags_page with correct parameters' do
+        with_them do
+          it 'calls ContainerRepository#tags_page with the correct parameters' do
             expect(repository).to receive(:tags_page).with(
-              before: before,
-              last: after,
+              before: 'abc',
+              last: 'xyz',
               sort: sort_value,
-              name: name,
-              page_size: [first, last].map(&:to_i).max,
+              name: 'tag1',
+              page_size: 5,
               referrers: referrers,
-              referrer_type: referrer_type
+              referrer_type: 'application/example'
             )
 
             resolver(args)
diff --git a/spec/graphql/types/container_respository_tags_sort_enum_spec.rb b/spec/graphql/types/container_respository_tags_sort_enum_spec.rb
index b464037d8d96bff072e19cee1f09ca82b76a266b..cfc44f6e99269e1e1a2d17fa73df6335d539a1c1 100644
--- a/spec/graphql/types/container_respository_tags_sort_enum_spec.rb
+++ b/spec/graphql/types/container_respository_tags_sort_enum_spec.rb
@@ -7,7 +7,7 @@
 
   it 'exposes all the existing issue sort values' do
     expect(described_class.values.keys).to include(
-      *%w[NAME_ASC NAME_DESC]
+      *%w[NAME_ASC NAME_DESC PUBLISHED_AT_ASC PUBLISHED_AT_DESC]
     )
   end
 end