diff --git a/CHANGELOG b/CHANGELOG
index 35b5803d34150744ba1820779273abc057c90cee..8d84e41958e94ddd137e52b455a72eac101284d3 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -14,6 +14,7 @@ v 8.0.0 (unreleased)
   - Create cross-reference for closing references on commits pushed to non-default branches (Maƫl Valais)
   - Ability to search milestones
   - Gracefully handle SMTP user input errors (e.g. incorrect email addresses) to prevent Sidekiq retries (Stan Hu)
+  - Improve abuse reports management from admin area
 
 v 7.14.1 (unreleased)
   - Only include base URL in OmniAuth full_host parameter (Stan Hu)
diff --git a/app/assets/javascripts/application.js.coffee b/app/assets/javascripts/application.js.coffee
index bb0a0c51fd43588655ceed9dcaa0ce6f71ffa775..c263912b7ea5e454c58051d0da965d910dc43362 100644
--- a/app/assets/javascripts/application.js.coffee
+++ b/app/assets/javascripts/application.js.coffee
@@ -116,6 +116,12 @@ $ ->
   $('.remove-row').bind 'ajax:success', ->
     $(this).closest('li').fadeOut()
 
+  $('.js-remove-tr').bind 'ajax:before', ->
+    $(this).hide()
+
+  $('.js-remove-tr').bind 'ajax:success', ->
+    $(this).closest('tr').fadeOut()
+
   # Initialize select2 selects
   $('select.select2').select2(width: 'resolve', dropdownAutoWidth: true)
 
diff --git a/app/controllers/admin/abuse_reports_controller.rb b/app/controllers/admin/abuse_reports_controller.rb
index 34f37bca4adaee9d9a4f5fab0a3f59a4fab09020..38a5a9fca08e36f30c77ee9c9b9cfd858297a250 100644
--- a/app/controllers/admin/abuse_reports_controller.rb
+++ b/app/controllers/admin/abuse_reports_controller.rb
@@ -4,8 +4,13 @@ class Admin::AbuseReportsController < Admin::ApplicationController
   end
 
   def destroy
-    AbuseReport.find(params[:id]).destroy
+    abuse_report = AbuseReport.find(params[:id])
 
-    redirect_to admin_abuse_reports_path, notice: 'Report was removed'
+    if params[:remove_user]
+      abuse_report.user.destroy
+    end
+
+    abuse_report.destroy
+    render nothing: true
   end
 end
diff --git a/app/views/admin/abuse_reports/_abuse_report.html.haml b/app/views/admin/abuse_reports/_abuse_report.html.haml
index 4449721ae380cba8b35b001da8c9b875f6e4a5d7..d3afc658cd62d3641e7b21be6ff14acdf84e594b 100644
--- a/app/views/admin/abuse_reports/_abuse_report.html.haml
+++ b/app/views/admin/abuse_reports/_abuse_report.html.haml
@@ -3,7 +3,7 @@
 %tr
   %td
     - if reporter
-      = link_to reporter.name, [:admin, reporter]
+      = link_to reporter.name, reporter
     - else
       (removed)
   %td
@@ -12,12 +12,15 @@
     = abuse_report.message
   %td
     - if user
-      = link_to user.name, [:admin, user]
+      = link_to user.name, user
     - else
       (removed)
   %td
     - if user
-      = link_to 'Block', block_admin_user_path(user), data: {confirm: 'USER WILL BE BLOCKED! Are you sure?'}, method: :put, class: "btn btn-xs btn-warning"
-      = link_to 'Remove user', [:admin, user], data: { confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?" }, method: :delete, class: "btn btn-xs btn-remove"
+      = link_to 'Remove user & report', admin_abuse_report_path(abuse_report, remove_user: true),
+        data: { confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?" }, remote: true, method: :delete, class: "btn btn-xs btn-remove js-remove-tr"
+
   %td
-    = link_to 'Remove report', [:admin, abuse_report], method: :delete, class: "btn btn-xs btn-close"
+    - if user
+      = link_to 'Block user', block_admin_user_path(user), data: {confirm: 'USER WILL BE BLOCKED! Are you sure?'}, method: :put, class: "btn btn-xs"
+    = link_to 'Remove report', [:admin, abuse_report], remote: true, method: :delete, class: "btn btn-xs btn-close js-remove-tr"
diff --git a/app/views/admin/abuse_reports/index.html.haml b/app/views/admin/abuse_reports/index.html.haml
index 4a25848f1566583462e29c9a0b082711d0e3300a..2e8746146d15f8b8690b53a6086c602bb8f43ee1 100644
--- a/app/views/admin/abuse_reports/index.html.haml
+++ b/app/views/admin/abuse_reports/index.html.haml
@@ -9,7 +9,7 @@
         %th Reported at
         %th Message
         %th User
-        %th
+        %th Primary action
         %th
     = render @abuse_reports
   = paginate @abuse_reports