diff --git a/dune/istl/umfpack.hh b/dune/istl/umfpack.hh
index 416d7af52eb393d3a871548d78a678d5a3153067..6e96dc1e857eb98658087b710f9acb530e16e2ba 100644
--- a/dune/istl/umfpack.hh
+++ b/dune/istl/umfpack.hh
@@ -17,6 +17,7 @@
 #include<dune/common/fvector.hh>
 #include<dune/istl/bccsmatrixinitializer.hh>
 #include<dune/istl/bcrsmatrix.hh>
+#include<dune/istl/matrix.hh>
 #include<dune/istl/foreach.hh>
 #include<dune/istl/multitypeblockmatrix.hh>
 #include<dune/istl/multitypeblockvector.hh>
@@ -211,6 +212,12 @@ namespace Dune {
       using range_type  = BlockVector<UMFPackRangeType<T>, typename std::allocator_traits<A>::template rebind_alloc<UMFPackRangeType<T>>>;
     };
 
+    template<typename T, typename A>
+    struct UMFPackVectorChooser<Matrix<T,A>,
+      std::void_t<UMFPackDomainType<T>, UMFPackRangeType<T>>>
+    : public UMFPackVectorChooser<BCRSMatrix<T,A>, std::void_t<UMFPackDomainType<T>, UMFPackRangeType<T>>>
+    {};
+
     // to make the `UMFPackVectorChooser` work with `MultiTypeBlockMatrix`, we need to add an intermediate step for the rows, which are typically `MultiTypeBlockVector`
     template<typename FirstBlock, typename... Blocks>
     struct UMFPackVectorChooser<MultiTypeBlockVector<FirstBlock, Blocks...>,