diff --git a/tfexec/apply.go b/tfexec/apply.go
index 43c8bb6..a13ff85 100644
--- a/tfexec/apply.go
+++ b/tfexec/apply.go
@@ -13,6 +13,7 @@
 
 type applyConfig struct {
 	backup    string
+	destroy   bool
 	dirOrPlan string
 	lock      bool
 
@@ -32,6 +33,7 @@
 }
 
 var defaultApplyOptions = applyConfig{
+	destroy:     false,
 	lock:        true,
 	parallelism: 10,
 	refresh:     true,
@@ -94,6 +96,10 @@
 	conf.reattachInfo = opt.info
 }
 
+func (opt *DestroyFlagOption) configureApply(conf *applyConfig) {
+	conf.destroy = opt.destroy
+}
+
 // Apply represents the terraform apply subcommand.
 func (tf *Terraform) Apply(ctx context.Context, opts ...ApplyOption) error {
 	cmd, err := tf.applyCmd(ctx, opts...)
@@ -191,6 +197,14 @@
 			args = append(args, "-replace="+addr)
 		}
 	}
+	if c.destroy {
+		err := tf.compatible(ctx, tf0_15_2, nil)
+		if err != nil {
+			return nil, fmt.Errorf("-destroy option was introduced in Terraform 0.15.2: %w", err)
+		}
+		args = append(args, "-destroy")
+	}
+
 	if c.targets != nil {
 		for _, ta := range c.targets {
 			args = append(args, "-target="+ta)
diff --git a/tfexec/apply_test.go b/tfexec/apply_test.go
index 28e6b58..c226a1f 100644
--- a/tfexec/apply_test.go
+++ b/tfexec/apply_test.go
@@ -38,6 +38,7 @@
 			Target("target2"),
 			Var("var1=foo"),
 			Var("var2=bar"),
+			Destroy(true),
 			DirOrPlan("testfile"),
 		)
 		if err != nil {
@@ -60,6 +61,7 @@
 			"-refresh=false",
 			"-replace=aws_instance.test",
 			"-replace=google_pubsub_topic.test",
+			"-destroy",
 			"-target=target1",
 			"-target=target2",
 			"-var", "var1=foo",
diff --git a/tfexec/internal/e2etest/apply_test.go b/tfexec/internal/e2etest/apply_test.go
index d15d11a..03785fc 100644
--- a/tfexec/internal/e2etest/apply_test.go
+++ b/tfexec/internal/e2etest/apply_test.go
@@ -15,6 +15,10 @@
 	"github.com/hashicorp/terraform-exec/tfexec/internal/testutil"
 )
 
+var (
+	applyDestroyMinVersion = version.Must(version.NewVersion("0.15.2"))
+)
+
 func TestApply(t *testing.T) {
 	runTest(t, "basic", func(t *testing.T, tfv *version.Version, tf *tfexec.Terraform) {
 		err := tf.Init(context.Background())
@@ -62,3 +66,25 @@
 		}
 	})
 }
+
+func TestApplyDestroy(t *testing.T) {
+	runTest(t, "basic", func(t *testing.T, tfv *version.Version, tf *tfexec.Terraform) {
+		if tfv.LessThan(applyDestroyMinVersion) {
+			t.Skip("terraform apply -destroy was added in Terraform 0.15.2, so test is not valid")
+		}
+		err := tf.Init(context.Background())
+		if err != nil {
+			t.Fatalf("error running Init in test directory: %s", err)
+		}
+
+		err = tf.Apply(context.Background())
+		if err != nil {
+			t.Fatalf("error running Apply: %s", err)
+		}
+
+		err = tf.Apply(context.Background(), tfexec.Destroy(true))
+		if err != nil {
+			t.Fatalf("error running Apply -destroy: %s", err)
+		}
+	})
+}
