diff --git a/pkg/specgen/volumes.go b/pkg/specgen/volumes.go
index a7a1022b0b..f272a5c11e 100644
--- a/pkg/specgen/volumes.go
+++ b/pkg/specgen/volumes.go
@@ -1,6 +1,7 @@
 package specgen
 
 import (
+	"path/filepath"
 	"strings"
 
 	"github.com/containers/common/pkg/parse"
@@ -56,7 +57,6 @@ func GenVolumeMounts(volumeFlag []string) (map[string]spec.Mount, map[string]*Na
 	overlayVolumes := make(map[string]*OverlayVolume)
 
 	volumeFormatErr := errors.Errorf("incorrect volume format, should be [host-dir:]ctr-dir[:option]")
-
 	for _, vol := range volumeFlag {
 		var (
 			options []string
@@ -71,6 +71,20 @@ func GenVolumeMounts(volumeFlag []string) (map[string]spec.Mount, map[string]*Na
 		}
 
 		src = splitVol[0]
+
+		// Support relative paths beginning with ./
+		if strings.HasPrefix(src, "./") {
+			path, err := filepath.EvalSymlinks(src)
+			if err != nil {
+				return nil, nil, nil, err
+			}
+			src, err = filepath.Abs(path)
+			if err != nil {
+				return nil, nil, nil, err
+			}
+			splitVol[0] = src
+		}
+
 		if len(splitVol) == 1 {
 			// This is an anonymous named volume. Only thing given
 			// is destination.
diff --git a/test/e2e/run_volume_test.go b/test/e2e/run_volume_test.go
index f31e62e428..edb6576950 100644
--- a/test/e2e/run_volume_test.go
+++ b/test/e2e/run_volume_test.go
@@ -953,4 +953,32 @@ USER testuser`, fedoraMinimal)
 		Expect(volMount).Should(Exit(0))
 		Expect(volMount.OutputToString()).To(Equal("1000:1000"))
 	})
+
+	It("podman run -v with a relative dir", func() {
+		mountPath := filepath.Join(podmanTest.TempDir, "vol")
+		err = os.Mkdir(mountPath, 0755)
+		Expect(err).ToNot(HaveOccurred())
+		defer func() {
+			err := os.RemoveAll(mountPath)
+			Expect(err).ToNot(HaveOccurred())
+		}()
+
+		f, err := os.CreateTemp(mountPath, "podman")
+		Expect(err).ToNot(HaveOccurred())
+
+		cwd, err := os.Getwd()
+		Expect(err).ToNot(HaveOccurred())
+
+		err = os.Chdir(mountPath)
+		Expect(err).ToNot(HaveOccurred())
+		defer func() {
+			err := os.Chdir(cwd)
+			Expect(err).ToNot(HaveOccurred())
+		}()
+
+		run := podmanTest.Podman([]string{"run", "-it", "--security-opt", "label=disable", "-v", "./:" + dest, ALPINE, "ls", dest})
+		run.WaitWithDefaultTimeout()
+		Expect(run).Should(Exit(0))
+		Expect(run.OutputToString()).Should(ContainSubstring(strings.TrimLeft("/vol/", f.Name())))
+	})
 })