diff --git a/Applications/ApplicationsLib/CMakeLists.txt b/Applications/ApplicationsLib/CMakeLists.txt
index 512ddb5a72af6c8c3b22ec2f0c75d970d7794e59..b4e25fcce00823533822eabe6ff7a846a60e8462 100644
--- a/Applications/ApplicationsLib/CMakeLists.txt
+++ b/Applications/ApplicationsLib/CMakeLists.txt
@@ -10,7 +10,7 @@ target_link_libraries(
     PUBLIC BaseLib GeoLib NumLib
            $<$<TARGET_EXISTS:VTK::ParallelMPI>:VTK::ParallelMPI>
     PRIVATE CMakeInfoLib MathLib MeshLib MeshGeoToolsLib MeshToolsLib pybind11::pybind11
-            $<$<BOOL:${OGS_USE_PETSC}>:petsc>
+            $<$<BOOL:${OGS_USE_PETSC}>:PkgConfig::PETSC>
 )
 
 if(OGS_BUILD_CLI OR OGS_BUILD_UTILS OR OGS_BUILD_TESTING)
diff --git a/BaseLib/CMakeLists.txt b/BaseLib/CMakeLists.txt
index 6e331a4ee6e2ed21f4044bb2d314647e7a9693f2..019bb739d239550e50046d717a773f85c18be92b 100644
--- a/BaseLib/CMakeLists.txt
+++ b/BaseLib/CMakeLists.txt
@@ -16,7 +16,7 @@ target_link_libraries(
            $<$<BOOL:${MSVC}>:WinMM> # needed for timeGetTime
            $<$<BOOL:${OGS_BUILD_GUI}>:Qt5::Xml>
            $<$<BOOL:${OGS_BUILD_GUI}>:Qt5::XmlPatterns>
-           $<$<BOOL:${OGS_USE_PETSC}>:petsc>
+           $<$<BOOL:${OGS_USE_PETSC}>:PkgConfig::PETSC>
     PRIVATE xmlpatch
 )
 
diff --git a/MathLib/CMakeLists.txt b/MathLib/CMakeLists.txt
index 80187fb711c74c92e208e2e18c860730492e32fc..ca6bd559cd447321031ca2f1b2183efd2316093a 100644
--- a/MathLib/CMakeLists.txt
+++ b/MathLib/CMakeLists.txt
@@ -31,7 +31,7 @@ target_link_libraries(
            $<$<TARGET_EXISTS:LAPACK::LAPACK>:LAPACK::LAPACK>
            $<$<BOOL:${OGS_USE_LIS}>:${LIS_LIBRARIES}>
            $<$<BOOL:${OGS_USE_CVODE}>:CVODE::CVODE>
-           $<$<BOOL:${OGS_USE_PETSC}>:petsc>
+           $<$<BOOL:${OGS_USE_PETSC}>:PkgConfig::PETSC>
            $<$<BOOL:${OGS_USE_MKL}>:MKL::MKL>
            Eigen3::Eigen
            $<$<TARGET_EXISTS:OpenMP::OpenMP_CXX>:OpenMP::OpenMP_CXX>
diff --git a/scripts/cmake/DependenciesExternalProject.cmake b/scripts/cmake/DependenciesExternalProject.cmake
index 0501a65da862b76ff3a4fff3e910a4f6374ead93..093a0318947cc9a1ff8d9d7094b8484a88d8a440 100644
--- a/scripts/cmake/DependenciesExternalProject.cmake
+++ b/scripts/cmake/DependenciesExternalProject.cmake
@@ -143,7 +143,7 @@ if(OGS_USE_PETSC)
         set(_petsc_source URL ${_petsc_source_file})
     elseif(NOT (OGS_PETSC_CONFIG_OPTIONS OR OGS_BUILD_PETSC))
         find_package(PkgConfig REQUIRED)
-        pkg_search_module(PETSC REQUIRED PETSc)
+        pkg_search_module(PETSC IMPORTED_TARGET PETSc)
     endif()
 
     if(NOT PETSC_FOUND)
@@ -173,23 +173,12 @@ if(OGS_USE_PETSC)
                 "ExternalProject_Add(): added package PETSc@${ogs.minimum_version.petsc}"
         )
         set(_EXT_LIBS ${_EXT_LIBS} PETSc CACHE INTERNAL "")
-        BuildExternalProject_find_package(PETSc)
+        set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${build_dir_PETSc})
     endif()
 
-    add_library(petsc SHARED IMPORTED)
-    target_include_directories(petsc INTERFACE ${PETSC_INCLUDES} ${PETSC_INCLUDE_DIRS})
-    if("PETSc" IN_LIST _EXT_LIBS)
-        # Get first petsc lib as import location
-        list(GET PETSC_LIBRARIES 0 _first_petsc_lib)
-        set_target_properties(
-            petsc PROPERTIES IMPORTED_LOCATION ${_first_petsc_lib}
-        )
-    else()
-        set_target_properties(
-            petsc PROPERTIES IMPORTED_LOCATION ${pkgcfg_lib_PETSC_petsc}
-        )
-    endif()
-    target_compile_definitions(petsc INTERFACE USE_PETSC)
+    find_package(PkgConfig REQUIRED)
+    pkg_search_module(PETSC REQUIRED IMPORTED_TARGET PETSc)
+    target_compile_definitions(PkgConfig::PETSC INTERFACE USE_PETSC)
 endif()
 
 if(OGS_USE_LIS)