Ryan O'Donoghue kicked 1-06 as Mayo edged out Monaghan in Division 1 of the Allianz Football League.
The teams were never separated by more than one score in a tense battle where Jason Doherty's goal midway through the second half sent Mayo on their way to a hard-earned win.
Monaghan created a string of chances early on but only had a Gary Mohan point to show for their efforts, with Rob Hennelly denying Mícheál Bannigan an early goal.
Ryan O’Donoghue made a Mayo attack count at the other end when he jinked through to slide home the opening goal on five minutes, with Fionn McDonagh adding a quick point.
Monaghan responded, however, when Bannigan turned provider for Jack McCarron to palm to the net and they added three of the next four points through McCarron, Karl O’Connell and Andrew Woods, with an O’Donoghue free keeping Mayo in touch.
Points by Diarmuid O’Connor and Conor O’Shea brought the visitors back on level terms and although Shane Carey, McCarron and Mohan added to Monaghan’s tally, O’Donoghue replied each time (two from frees).
Mayo lost Eoghan McLaughlin to injury before a McCarron free edged Monaghan ahead by 1-08 to 1-07 at half-time.
O’Donoghue and Carey swapped points from frees after the restart before Mayo’s top scorer had a second goal disallowed for a push on Conor Boyle.
A point by Woods ended a lengthy scoreless spell to double Monaghan’s lead, but they scored just once in the final quarter via a free by substitute Conor McManus.
The game’s crucial score arrived in the 54th minute when Mayo worked the ball sharply through the hands for Jason Doherty to drill home their second goal.
Further points by Conor Loftus and another O’Donoghue free were enough to keep Mayo ahead and see them move onto three points after two games.
Monaghan had enough chances to at least secure a second consecutive draw but a last-gasp attempt to steal the full points came to nothing when Ryan McAnespie’s close-range shot was cleared off the line by his opposite number, Paddy Durcan.
Monaghan: Rory Beggan; Ryan Wylie, Conor Boyle, Kieran Duffy; Karl O’Connell (0-01), Dessie Ward, Conor McCarthy; Darren Hughes, Niall Kearns; Shane Carey (0-02, 2f), Mícheál Bannigan, Ryan McAnespie; Andrew Woods (0-02); Jack McCarron (1-03, 1f), Gary Mohan (0-02, 1m).
Subs: Conor McManus (0-01f) for O’Connell (42), Aaron Mulligan for Woods (54), Shane Hanratty for McCarthy (54), David Garland for McCarron (62), Killian Lavelle for Kearns (64).
Mayo: Rob Hennelly; Lee Keegan, Pádraig O’Hora; Brendan Harrison; Paddy Durcan, Michael Plunkett, Eoghan McLaughlin; Conor O’Shea (0-01), Stephen Coen; Fionn McDonagh (0-01), Diarmuid O’Connor (0-01), Bryan Walsh; Aiden Orme, Jason Doherty (1-00), Ryan O’Donoghue (1-06, 5f).
Subs: Aidan O’Shea for Coen (25), Rory Brickenden for McLaughlin (35), Conor Loftus (0-01) for McDonagh (45), Jordan Flynn for C O’Shea (48), Donnacha McHugh for Harrison (62).
Referee: Seán Hurson (Tyrone).