diff --git a/MANUAL.txt b/MANUAL.txt
index 5d3f5b09b..eef0f245e 100644
--- a/MANUAL.txt
+++ b/MANUAL.txt
@@ -3068,7 +3068,7 @@ starts at 1.
 This extension can be enabled/disabled for the following formats:
 
 output formats
-:  `odt`, `opendocument`
+:  `odt`, `opendocument`, `docx`
 
 #### Extension: `xrefs_name` ####
 
diff --git a/src/Text/Pandoc/Extensions.hs b/src/Text/Pandoc/Extensions.hs
index 9c55d0a7a..ce04ce641 100644
--- a/src/Text/Pandoc/Extensions.hs
+++ b/src/Text/Pandoc/Extensions.hs
@@ -475,6 +475,7 @@ getAllExtensions f = universalExtensions <> getAll f
     [ Ext_raw_markdown ]
   getAll "docx"            = autoIdExtensions <> extensionsFromList
     [ Ext_empty_paragraphs
+    , Ext_native_numbering
     , Ext_styles
     ]
   getAll "opendocument"    = extensionsFromList
diff --git a/src/Text/Pandoc/Writers/Docx.hs b/src/Text/Pandoc/Writers/Docx.hs
index a3c4b6be1..756583d1f 100644
--- a/src/Text/Pandoc/Writers/Docx.hs
+++ b/src/Text/Pandoc/Writers/Docx.hs
@@ -869,14 +869,17 @@ blockToOpenXML' opts (Para [Image attr alt (src,T.stripPrefix "fig:" -> Just tit
                     then return []
                     else withParaPropM (pStyleM "Image Caption")
                          $ blockToOpenXML opts
-                            (Para $ Span (figid,[],[])
-                               [Str (figname <> "\160"),
-                                RawInline (Format "openxml")
-                                ("<w:fldSimple w:instr=\"SEQ Figure"
-                                <> " \\* ARABIC \"><w:r><w:t>"
-                                <> tshow fignum
-                                <> "</w:t></w:r></w:fldSimple>"),
-                                Str ":", Space] : alt)
+                         $ Para
+                         $ if isEnabled Ext_native_numbering opts
+                              then Span (figid,[],[])
+                                          [Str (figname <> "\160"),
+                                           RawInline (Format "openxml")
+                                           ("<w:fldSimple w:instr=\"SEQ Figure"
+                                           <> " \\* ARABIC \"><w:r><w:t>"
+                                           <> tshow fignum
+                                           <> "</w:t></w:r></w:fldSimple>"),
+                                           Str ":", Space] : alt
+                              else alt
   return $
     Elem (mknode "w:p" [] (map Elem paraProps ++ contents))
     : captionNode
@@ -922,7 +925,8 @@ blockToOpenXML' _ HorizontalRule = do
                        ("o:hralign","center"),
                        ("o:hrstd","t"),("o:hr","t")] () ]
 blockToOpenXML' opts (Table attr caption colspecs thead tbodies tfoot) =
-  tableToOpenXML (blocksToOpenXML opts)
+  tableToOpenXML opts
+                 (blocksToOpenXML opts)
                  (Grid.toTable attr caption colspecs thead tbodies tfoot)
 blockToOpenXML' opts el
   | BulletList lst <- el = addOpenXMLList BulletMarker lst
diff --git a/src/Text/Pandoc/Writers/Docx/Table.hs b/src/Text/Pandoc/Writers/Docx/Table.hs
index 7a84c5278..e23856f28 100644
--- a/src/Text/Pandoc/Writers/Docx/Table.hs
+++ b/src/Text/Pandoc/Writers/Docx/Table.hs
@@ -20,6 +20,8 @@ import Text.Pandoc.Definition
 import Text.Pandoc.Class.PandocMonad (PandocMonad, translateTerm)
 import Text.Pandoc.Writers.Docx.Types
 import Text.Pandoc.Shared
+import Text.Pandoc.Options (WriterOptions, isEnabled)
+import Text.Pandoc.Extensions (Extension(Ext_native_numbering))
 import Text.Printf (printf)
 import Text.Pandoc.Writers.GridTable hiding (Table)
 import Text.Pandoc.Writers.OOXML
@@ -29,10 +31,11 @@ import qualified Text.Pandoc.Translations as Term
 import qualified Text.Pandoc.Writers.GridTable as Grid
 
 tableToOpenXML :: PandocMonad m
-               => ([Block] -> WS m [Content])
+               => WriterOptions
+               -> ([Block] -> WS m [Content])
                -> Grid.Table
                -> WS m [Content]
-tableToOpenXML blocksToOpenXML gridTable = do
+tableToOpenXML opts blocksToOpenXML gridTable = do
   setFirstPara
   let (Grid.Table (ident,_,_) caption colspecs _rowheads thead tbodies tfoot) =
         gridTable
@@ -50,7 +53,9 @@ tableToOpenXML blocksToOpenXML gridTable = do
                 then return []
                 else withParaPropM (pStyleM "Table Caption")
                      $ blocksToOpenXML
-                     $ addLabel tableid tablename tablenum captionBlocks
+                     $ if isEnabled Ext_native_numbering opts
+                          then addLabel tableid tablename tablenum captionBlocks
+                          else captionBlocks
   -- We set "in table" after processing the caption, because we don't
   -- want the "Table Caption" style to be overwritten with "Compact".
   modify $ \s -> s { stInTable = True }
diff --git a/test/Tests/Writers/Docx.hs b/test/Tests/Writers/Docx.hs
index da25b95e0..93b56e1c2 100644
--- a/test/Tests/Writers/Docx.hs
+++ b/test/Tests/Writers/Docx.hs
@@ -31,7 +31,8 @@ tests = [ testGroup "inlines"
             "docx/golden/links.docx"
           , docxTest
             "inline image"
-            def
+            def{ writerExtensions =
+                   enableExtension Ext_native_numbering (writerExtensions def) }
             "docx/image_writer_test.native"
             "docx/golden/image.docx"
           , docxTest