diff --git a/ee/lib/gitlab/code_owners/file.rb b/ee/lib/gitlab/code_owners/file.rb
index 0bde1912ed2488161e013e35044ae973e3763b0f..d51dc94e46ada6687e583c0ac713c78266406ff4 100644
--- a/ee/lib/gitlab/code_owners/file.rb
+++ b/ee/lib/gitlab/code_owners/file.rb
@@ -80,7 +80,7 @@ def get_parsed_non_sectional_data
         data.lines.each do |line|
           line = line.strip
 
-          next if skip?(line)
+          next if skip?(line) || line.match?(SECTION_HEADER_REGEX)
 
           extract_entry_and_populate_parsed_data(line, parsed)
         end
diff --git a/ee/spec/lib/gitlab/code_owners/file_spec.rb b/ee/spec/lib/gitlab/code_owners/file_spec.rb
index 9858e184cf80854530fc8b74b6f542f35ccc66dc..f3ee8c65624ebe1565764b141f9c77b289047c81 100644
--- a/ee/spec/lib/gitlab/code_owners/file_spec.rb
+++ b/ee/spec/lib/gitlab/code_owners/file_spec.rb
@@ -37,6 +37,21 @@ def owner_line(pattern)
       expect(owner_line('/**/LICENSE')).to include('legal', 'janedoe@gitlab.com')
     end
 
+    context "when CODEOWNERS file contains multiple sections" do
+      let(:file_content) do
+        File.read(Rails.root.join("ee", "spec", "fixtures", "sectional_codeowners_example"))
+      end
+
+      let(:patterns) { ["[Documentation]", "[Database]"] }
+      let(:paths) { ["/**/[Documentation]", "/**/[Database]"] }
+
+      it "skips section headers when parsing" do
+        expect(file.parsed_data.keys).not_to include(*paths)
+        expect(file.parsed_data.values.any? { |e| patterns.include?(e.pattern) }).to be_falsey
+        expect(file.parsed_data.values.any? { |e| e.owner_line.blank? }).to be_falsey
+      end
+    end
+
     context "when feature flag `:sectional_codeowners` is enabled" do
       using RSpec::Parameterized::TableSyntax
 
@@ -44,7 +59,7 @@ def owner_line(pattern)
         stub_feature_flags(sectional_codeowners: true)
       end
 
-      shared_examples_for "creates expected parsed results" do
+      shared_examples_for "creates expected parsed sectional results" do
         it "is a hash sorted by sections without duplicates" do
           data = file.parsed_data
 
@@ -102,7 +117,7 @@ def owner_line(pattern)
           File.read(Rails.root.join("ee", "spec", "fixtures", "sectional_codeowners_example"))
         end
 
-        it_behaves_like "creates expected parsed results"
+        it_behaves_like "creates expected parsed sectional results"
       end
 
       context "when CODEOWNERS file contains multiple sections with mixed-case names" do
@@ -110,7 +125,7 @@ def owner_line(pattern)
           File.read(Rails.root.join("ee", "spec", "fixtures", "mixed_case_sectional_codeowners_example"))
         end
 
-        it_behaves_like "creates expected parsed results"
+        it_behaves_like "creates expected parsed sectional results"
       end
     end
   end