diff --git a/MathLib/CMakeLists.txt b/MathLib/CMakeLists.txt
index 2a7ee1dddadac5b932937df4e9a4f864a5d2ddd3..46588c75ecdab1d6170ba7049ea3c16498b04bde 100644
--- a/MathLib/CMakeLists.txt
+++ b/MathLib/CMakeLists.txt
@@ -38,6 +38,7 @@ target_link_libraries(MathLib
         ${OpenMP_CXX_LIBRARIES}
         $<$<TARGET_EXISTS:LAPACK::LAPACK>:LAPACK::LAPACK>
         $<$<BOOL:${OGS_USE_LIS}>:${LIS_LIBRARIES}>
+        Eigen3::Eigen
     PRIVATE
         spdlog::spdlog
 )
diff --git a/scripts/cmake/ConanSetup.cmake b/scripts/cmake/ConanSetup.cmake
index 92182e4a01fe9cb9bf813bc85d1465cdf4738aad..4dc1cde427cf5d7830515c1c74fb5b5d9a8cdccc 100644
--- a/scripts/cmake/ConanSetup.cmake
+++ b/scripts/cmake/ConanSetup.cmake
@@ -34,7 +34,6 @@ include(${PROJECT_SOURCE_DIR}/scripts/cmake/conan/conan.cmake)
 
 set(CONAN_REQUIRES
     boost/${ogs.minimum_version.boost}@conan/stable
-    eigen/${ogs.minimum_version.eigen}
     vtk/${ogs.tested_version.vtk}@bilke/stable
     CACHE INTERNAL ""
 )
diff --git a/scripts/cmake/Dependencies.cmake b/scripts/cmake/Dependencies.cmake
index 9241876be3de1b2b72116b676a7bd81f93c2de80..13083afd4157ea08a16c00bec177f23fe6489762 100644
--- a/scripts/cmake/Dependencies.cmake
+++ b/scripts/cmake/Dependencies.cmake
@@ -95,3 +95,14 @@ if (OGS_BUILD_PROCESS_ComponentTransport
         include(scripts/cmake/iphreeqc.cmake)
     endif()
 endif()
+
+CPMFindPackage(
+    NAME Eigen3
+    GITLAB_REPOSITORY libeigen/eigen
+    GIT_TAG ${ogs.minimum_version.eigen}
+    DOWNLOAD_ONLY YES
+)
+if(Eigen3_ADDED)
+    add_library(Eigen3::Eigen INTERFACE IMPORTED)
+    target_include_directories(Eigen3::Eigen SYSTEM INTERFACE ${Eigen3_SOURCE_DIR})
+endif()
diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake
index f49ae38334445d8cc3e489390887255a216ba541..745ba7f2c5347c8da701c4b9d099f6bc11189b07 100644
--- a/scripts/cmake/Find.cmake
+++ b/scripts/cmake/Find.cmake
@@ -82,13 +82,6 @@ else()
     include(${VTK_USE_FILE})
 endif()
 
-if(OGS_USE_CONAN)
-    set(EIGEN3_INCLUDE_DIR ${CONAN_INCLUDE_DIRS_EIGEN} CACHE INTERNAL "")
-else()
-    find_package(Eigen3 ${ogs.minimum_version.eigen} REQUIRED)
-endif()
-include_directories(SYSTEM ${EIGEN3_INCLUDE_DIR})
-
 if(OGS_USE_MFRONT)
     ## pthread, is a requirement of mfront ##
     set(CMAKE_THREAD_PREFER_PTHREAD ON)